1 #
   2 # This file and its contents are supplied under the terms of the
   3 # Common Development and Distribution License ("CDDL"), version 1.0.
   4 # You may only use this file in accordance with the terms of version
   5 # 1.0 of the CDDL.
   6 #
   7 # A full copy of the text of the CDDL should have accompanied this
   8 # source.  A copy of the CDDL is also available via the Internet at
   9 # http://www.illumos.org/license/CDDL.
  10 #
  11 
  12 # Copyright 2012, Richard Lowe.
  13 
  14 CC =            gcc
  15 CFLAGS =        -O1 -m64
  16 
  17 LINK.c =  $(CC) $(CFLAGS) -o $@ $^
  18 COMPILE.s = $(CC) $(CFLAGS) -c -o $@ $^
  19 
  20 .KEEP_STATE:
  21 
  22 install default: all
  23 
  24 %.o: $(TESTDIR)/%.s
  25         $(COMPILE.s)
  26 
  27 # A basic use of TLS that uses the movq m/r --> movq i/r variant
  28 PROGS +=        style2
  29 STYLE2OBJS =    style2.o
  30 style2: $(STYLE2OBJS)
  31         $(LINK.c)
  32 
  33 # A copy of style2 that uses %r13 in the TLS sequence, and thus excercises the
  34 # REX transitions of the movq mem,reg -> movq imm,reg variant.
  35 PROGS +=        style2-with-r13
  36 STYLE2R13OBJS = style2-with-r13.o
  37 style2-with-r13: $(STYLE2R13OBJS)
  38         $(LINK.c)
  39 
  40 # A copy of style2 that uses %r12 in the TLS sequence, so we can verify that
  41 # it is _not_ special to this variant
  42 PROGS +=        style2-with-r12
  43 STYLE2R12OBJS = style2-with-r12.o
  44 style2-with-r12: $(STYLE2R12OBJS)
  45         $(LINK.c)
  46 
  47 # A copy of style2 that has a R_AMD64_GOTTPOFF relocation with a bad insn sequence
  48 STYLE2BADNESSOBJS =     style2-with-badness.o
  49 style2-with-badness: $(STYLE2BADNESSOBJS)
  50         -$(LINK.c)
  51 
  52 # A basic use of TLS that uses the addq mem/reg --> leaq mem,reg variant
  53 PROGS +=        style1
  54 STYLE1OBJS =    style1-main.o style1-func.o
  55 style1: $(STYLE1OBJS)
  56         $(LINK.c)
  57 
  58 # A copy of style1-func that uses %r13 in the TLS sequence and thus excercises
  59 # the REX transitions. of the addq mem,reg --> leaq mem,reg variant
  60 PROGS +=        style1-with-r13
  61 STYLE1R13OBJS = style1-main.o style1-func-with-r13.o
  62 style1-with-r13: $(STYLE1R13OBJS)
  63         $(LINK.c)
  64 
  65 # A copy of style1-func that uses %r12 to test the addq mem,reg --> addq imm,reg variant
  66 PROGS +=        style1-with-r12
  67 STYLE1R12OBJS = style1-main.o style1-func-with-r12.o
  68 style1-with-r12: $(STYLE1R12OBJS)
  69         $(LINK.c)
  70 
  71 all:    $(PROGS)
  72 
  73 clobber clean:
  74         rm -f $(PROGS) $(STYLE1OBJS) $(STYLE1R13OBJS) $(STYLE1R12OBJS) \
  75             $(STYLE2OBJS) $(STYLE2R13OBJS) $(STYLE2R12OBJS) $(STYLE2BADNESSOBJS)
  76 
  77 fail: style2-with-badness FRC
  78 
  79 FRC: