Ignore:
Timestamp:
Dec 27, 2009, 4:41:14 AM (11 years ago)
Author:
plkrueger
Message:

Don't change the m4 quoting characters from their defaults (`').
(On the ARM, square brackets are used to denote memory operands, curly
braces surround register lists, and multicharacter quoting delimeters
look funny ...)

Some versions (at least) of m4 are confused by quoting characters in
comments, so try to refrain from using contractions ...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/m4macros.m4

    r13066 r13337  
    1 changequote([,])
    2 changecom([/* ],[*/])
     1changecom(`/*',`*/')
    32
    43
     
    2625
    2726
    28 define([BSDstabs],[1])
    29 define([ELFstabs],[2])
    30 define([COFFstabs],[3])
    31 undefine([EABI])
    32 undefine([POWEROPENABI])
    33 undefine([rTOC])
    34 
    35 
    36 ifdef([DARWIN],[define([SYSstabs],[BSDstabs])
    37                 define([DarwinAssembler],[])
    38                 define([CNamesNeedUnderscores],[])
    39                 define([LocalLabelPrefix],[L])
    40                 define([StartTextLabel],[Ltext0])
    41                 define([EndTextLabel],[Letext])
    42                 ifdef([PPC],[
    43                 define([POWEROPENABI],[])])
    44                 ifdef([X86],[
    45                 define([SYSCALL_SETS_CARRY_ON_ERROR],[])
    46                 define([SSE2_MATH_LIB],[])])
    47 ])
    48 
    49 ifdef([LINUX],[define([SYSstabs],[ELFstabs])
    50                define([HaveWeakSymbols],[])
    51                define([LocalLabelPrefix],[.L])
    52                define([StartTextLabel],[.Ltext0])
    53                define([EndTextLabel],[.Letext])
    54                ifdef([PPC64],[
    55                define([POWEROPENABI],[])
    56                define([rTOC],[r2])], [
    57                define([EABI],[])])])
    58 
    59 ifdef([FREEBSD],[define([SYSstabs],[ELFstabs])
    60                define([HaveWeakSymbols],[])
    61                define([LocalLabelPrefix],[.L])
    62                define([StartTextLabel],[.Ltext0])
    63                define([EndTextLabel],[.Letext])]
    64                 ifdef([X86],[
    65                 define([SYSCALL_SETS_CARRY_ON_ERROR],[])])
     27define(`BSDstabs',`1')
     28define(`ELFstabs',`2')
     29define(`COFFstabs',`3')
     30undefine(`EABI')
     31undefine(`POWEROPENABI')
     32undefine(`rTOC')
     33
     34
     35ifdef(`DARWIN',`define(`SYSstabs',`BSDstabs')
     36                define(`DarwinAssembler',`')
     37                define(`CNamesNeedUnderscores',`')
     38                define(`LocalLabelPrefix',`L')
     39                define(`StartTextLabel',`Ltext0')
     40                define(`EndTextLabel',`Letext')
     41                ifdef(`PPC',`
     42                define(`POWEROPENABI',`')')
     43                ifdef(`X86',`
     44                define(`SYSCALL_SETS_CARRY_ON_ERROR',`')
     45                define(`SSE2_MATH_LIB',`')')
     46')
     47
     48ifdef(`LINUX',`define(`SYSstabs',`ELFstabs')
     49               define(`HaveWeakSymbols',`')
     50               define(`LocalLabelPrefix',`.L')
     51               define(`StartTextLabel',`.Ltext0')
     52               define(`EndTextLabel',`.Letext')
     53               ifdef(`PPC64',`
     54               define(`POWEROPENABI',`')
     55               define(`rTOC',`r2')', `
     56               define(`EABI',`')')')
     57
     58ifdef(`FREEBSD',`define(`SYSstabs',`ELFstabs')
     59               define(`HaveWeakSymbols',`')
     60               define(`LocalLabelPrefix',`.L')
     61               define(`StartTextLabel',`.Ltext0')
     62               define(`EndTextLabel',`.Letext')'
     63                ifdef(`X86',`
     64                define(`SYSCALL_SETS_CARRY_ON_ERROR',`')')
    6665)
    6766
    68 ifdef([SOLARIS],[define([SYSstabs],[ELFstabs])
    69                define([HaveWeakSymbols],[])
    70                define([LocalLabelPrefix],[.L])
    71                define([StartTextLabel],[.Ltext0])
    72                define([EndTextLabel],[.Letext])])
    73 
    74 ifdef([WINDOWS],[define([SYSstabs],[COFFstabs])
    75                define([CNamesNeedUnderscores],[])
    76                define([LocalLabelPrefix],[L])
    77                define([StartTextLabel],[Ltext0])
    78                define([EndTextLabel],[Letext])])
     67ifdef(`SOLARIS',`define(`SYSstabs',`ELFstabs')
     68               define(`HaveWeakSymbols',`')
     69               define(`LocalLabelPrefix',`.L')
     70               define(`StartTextLabel',`.Ltext0')
     71               define(`EndTextLabel',`.Letext')')
     72
     73ifdef(`WINDOWS',`define(`SYSstabs',`COFFstabs')
     74               define(`CNamesNeedUnderscores',`')
     75               define(`LocalLabelPrefix',`L')
     76               define(`StartTextLabel',`Ltext0')
     77               define(`EndTextLabel',`Letext')')
    7978
    8079
     
    8281/*  Still.  After all these years.  Why ?  */
    8382
    84 define([C],[ifdef([CNamesNeedUnderscores],[[_]$1],[$1])])
    85 
    86 define([_linecounter_],0)
    87 
    88 define([_emit_BSD_source_line_stab],[
    89 ifdef([X86],[
    90 # __line__ "__file__" 1],[
     83define(`C',`ifdef(`CNamesNeedUnderscores',``_'$1',`$1')')
     84
     85define(`_linecounter_',0)
     86
     87define(`_emit_BSD_source_line_stab',`
     88ifdef(`X86',`
     89# __line__ "__file__" 1',`
    9190        .stabd 68,0,$1
    92 ])])
     91')')
    9392
    9493
     
    9796/*  here's how to say that we want it ...  */
    9897
    99 define([WEAK],[ifdef([HaveWeakSymbols],[
     98define(`WEAK',`ifdef(`HaveWeakSymbols',`
    10099        .weak $1
    101 ],[
     100',`
    102101        .globl $1
    103 ])])
    104 
    105 define([_emit_ELF_source_line_stab],[
    106   define([_linecounter_],incr(_linecounter_))
    107         .stabn 68,0,$1,[.LM]_linecounter_[-]__func_name
    108 [.LM]_linecounter_:
    109 ])
    110 
    111 define([_emit_COFF_source_line_stab],[
     102')')
     103
     104define(`_emit_ELF_source_line_stab',`
     105  define(`_linecounter_',incr(_linecounter_))
     106        .stabn 68,0,$1,`.LM'_linecounter_`-'__func_name
     107`.LM'_linecounter_:
     108')
     109
     110define(`_emit_COFF_source_line_stab',`
    112111        _emit_ELF_source_line_stab($1)
    113 ])
    114 
    115 
    116 define([emit_source_line_stab],[
     112')
     113
     114
     115define(`emit_source_line_stab',`
    117116        ifelse(eval(SYSstabs),
    118117             eval(BSDstabs),
    119               [_emit_BSD_source_line_stab($1)],
     118              `_emit_BSD_source_line_stab($1)',
    120119              eval(SYSstabs),
    121120              eval(ELFstabs),
    122               [_emit_ELF_source_line_stab($1)],
    123               [_emit_COFF_source_line_stab($1)])])
     121              `_emit_ELF_source_line_stab($1)',
     122              `_emit_COFF_source_line_stab($1)')')
    124123
    125124
     
    132131
    133132
    134 define([HA],[ifdef([DARWIN],[ha16($1)],[$1@ha])])
     133define(`HA',`ifdef(`DARWIN',`ha16($1)',`$1@ha')')
    135134
    136135 
     
    138137/*  concern for sign-extension of the low half.  */
    139138
    140 define([LO],[ifdef([DARWIN],[lo16($1)],[$1@l])])
    141 define([HI],[ifdef([DARWIN],[hi16($1)],[$1@hi])])
     139define(`LO',`ifdef(`DARWIN',`lo16($1)',`$1@l')')
     140define(`HI',`ifdef(`DARWIN',`hi16($1)',`$1@hi')')
    142141
    143142/*  Note that m4 macros that could be expanded in the .text segment  */
     
    147146
    148147
    149 define([N_FUN],36)
    150 define([N_SO],100)
     148define(`N_FUN',36)
     149define(`N_SO',100)
    151150
    152151/*    I wish that there was a less-dumb way of doing this.  */
    153152
    154 define([pwd0],esyscmd([/bin/pwd]))
    155 define([__pwd__],substr(pwd0,0,decr(len(pwd0)))[/])
     153define(`pwd0',esyscmd(`/bin/pwd'))
     154define(`__pwd__',substr(pwd0,0,decr(len(pwd0)))`/')
    156155
    157156/*   _beginfile() -- gets line/file in synch, generates N_SO for file,  */
     
    159158
    160159
    161 define([_beginfile],[
     160define(`_beginfile',`
    162161        .stabs "__pwd__",N_SO,0,0,StartTextLabel()
    163162        .stabs "__file__",N_SO,0,0,StartTextLabel()
    164 ifdef([PPC64],[
    165 ifdef([DARWIN],[
     163ifdef(`PPC64',`
     164ifdef(`DARWIN',`
    166165        .machine ppc64
    167 ])])
     166')')
    168167        .text
    169168StartTextLabel():
    170169# __line__ "__file__"
    171 ])
    172 
    173 define([_endfile],[
     170')
     171
     172define(`_endfile',`
    174173        .stabs "",N_SO,0,0,EndTextLabel()
    175174EndTextLabel():
    176175# __line__
    177 ])
    178 
    179 define([_startfn],[define([__func_name],$1)
     176')
     177
     178define(`_startfn',`define(`__func_name',$1)
    180179# __line__
    181         ifelse(eval(SYSstabs),eval(ELFstabs),[
     180        ifelse(eval(SYSstabs),eval(ELFstabs),`
    182181        .type $1,@function
    183 ])
     182')
    184183
    185184$1:
    186 ifdef([WINDOWS],[
     185ifdef(`WINDOWS',`
    187186        .def    $1;     .scl    2;      .type   32;     .endef
    188 ],[
     187',`
    189188        .stabd 68,0,__line__
    190 ])
     189')
    191190        .stabs "$1:F1",36,0,__line__,$1
    192191        .set func_start,$1
    193 # __line__ "__file__" 1 ])
    194 
    195 
    196 
    197 define([_exportfn],[
     192# __line__ "__file__" 1 ')
     193
     194
     195
     196define(`_exportfn',`
    198197        .globl $1
    199198        _startfn($1)
    200 ifdef([PPC64],[
    201 ifdef([LINUX],[
    202         .global [.]$1
    203 [.]$1:
    204 ])])
     199ifdef(`PPC64',`
     200ifdef(`LINUX',`
     201        .global `.'$1
     202`.'$1:
     203')')
    205204# __line__
    206 ])
    207 
    208 
    209 define([_endfn],[
    210 LocalLabelPrefix[]__func_name[999]:
    211 ifdef([WINDOWS],[
    212 ],[
    213         .stabs "",36,0,0,LocalLabelPrefix[]__func_name[999]-__func_name
     205')
     206
     207
     208define(`_endfn',`
     209LocalLabelPrefix`'__func_name`999':
     210ifdef(`WINDOWS',`
     211',`
     212        .stabs "",36,0,0,LocalLabelPrefix`'__func_name`999'-__func_name
    214213        .line __line__
    215         ifelse(eval(SYSstabs),eval(ELFstabs),[
    216         .size __func_name,LocalLabelPrefix[]__func_name[999]-__func_name
    217 ])
    218 ])
    219         undefine([__func_name])
    220 ])
     214        ifelse(eval(SYSstabs),eval(ELFstabs),`
     215        .size __func_name,LocalLabelPrefix`'__func_name`999'-__func_name
     216')
     217')
     218        undefine(`__func_name')
     219')
    221220
    222221
     
    225224/*   doesn't remember much of it ..  */
    226225
    227 define([_struct], [define([__struct_name],$1)
    228  define([_struct_org_name], _$1_org)
    229  define([_struct_base_name], _$1_base)
     226define(`_struct', `define(`__struct_name',$1)
     227 define(`_struct_org_name', _$1_org)
     228 define(`_struct_base_name', _$1_base)
    230229        .set _struct_org_name,$2
    231230        .set _struct_base_name,_struct_org_name
    232  ifelse($3,[],[
    233   undefine([_struct_fixed_size_name])
    234   ],[
    235   define([_struct_fixed_size_name], _$1_fixed_size)
     231 ifelse($3,`',`
     232  undefine(`_struct_fixed_size_name')
     233  ',`
     234  define(`_struct_fixed_size_name', _$1_fixed_size)
    236235        .set _struct_fixed_size_name,$3
    237   ])
    238 ])
    239 
    240 define([_struct_pad],[
     236  ')
     237')
     238
     239define(`_struct_pad',`
    241240        .set _struct_org_name,_struct_org_name + $1
    242 ])
     241')
    243242 
    244 define([_struct_label],[
    245         .set __struct_name[.]$1, _struct_org_name
    246 ])
     243define(`_struct_label',`
     244        .set __struct_name`.'$1, _struct_org_name
     245')
    247246
    248247/*  _field(name,size)   */
    249 define([_field],[_struct_label($1) _struct_pad($2)])
    250 
    251 define([_halfword], [_field($1, 2)])
    252 define([_word], [_field($1, 4)])
    253 define([_dword],[_field($1, 8)])
    254 define([_node], [_field($1, node_size)])
    255 
    256 define([_ends],[ifdef([_struct_fixed_size_name],[
    257         .set  __struct_name[.size],_struct_fixed_size_name
    258         ],[
    259         .set  __struct_name[.size], _struct_org_name-_struct_base_name
    260         ])
    261 ])
     248define(`_field',`_struct_label($1) _struct_pad($2)')
     249
     250define(`_halfword', `_field($1, 2)')
     251define(`_word', `_field($1, 4)')
     252define(`_dword',`_field($1, 8)')
     253define(`_node', `_field($1, node_size)')
     254
     255define(`_ends',`ifdef(`_struct_fixed_size_name',`
     256        .set  __struct_name`.size',_struct_fixed_size_name
     257        ',`
     258        .set  __struct_name`.size', _struct_org_name-_struct_base_name
     259        ')
     260')
    262261
    263262
     
    268267
    269268
    270 define([_structf],[
    271         _struct($1,ifelse($2,[],-misc_bias,$2))
     269define(`_structf',`
     270        _struct($1,ifelse($2,`',-misc_bias,$2))
    272271        _node(header)
    273 ])
    274 
    275 define([_endstructf],[
    276         .set __struct_name.[element_count],((_struct_org_name-node_size)-_struct_base_name)/node_size
     272')
     273
     274define(`_endstructf',`
     275        .set __struct_name.`element_count',((_struct_org_name-node_size)-_struct_base_name)/node_size
    277276        _ends
    278 ])
    279 
    280 
    281 define([__],[emit_source_line_stab(__line__)
     277')
     278
     279
     280define(`__',`emit_source_line_stab(__line__)
    282281        $@
    283         ])
    284 
    285 define([__local_label_counter__],0)
    286 define([__macro_label_counter__],0)
    287 
    288 define([new_local_labels],
    289   [define([__local_label_counter__],incr(__local_label_counter__))])
    290 
    291 define([new_macro_labels],
    292   [define([__macro_label_counter__],incr(__macro_label_counter__))])
    293 
    294 define([_local_label],[LocalLabelPrefix()[]$1])
    295 
    296 define([local_label],[_local_label($1[]__local_label_counter__)])
    297 
    298 define([macro_label],[_local_label($1[]__macro_label_counter__)])
     282        ')
     283
     284define(`__local_label_counter__',0)
     285define(`__macro_label_counter__',0)
     286
     287define(`new_local_labels',
     288  `define(`__local_label_counter__',incr(__local_label_counter__))')
     289
     290define(`new_macro_labels',
     291  `define(`__macro_label_counter__',incr(__macro_label_counter__))')
     292
     293define(`_local_label',`LocalLabelPrefix()`'$1')
     294
     295define(`local_label',`_local_label($1`'__local_label_counter__)')
     296
     297define(`macro_label',`_local_label($1`'__macro_label_counter__)')
    299298
    300299
     
    305304
    306305 
    307 define([__ifdef],[ifdef([$1],[.if 1],[.if 0])])
    308 define([__ifndef],[ifdef([$1],[.if 0],[.if 1])])
    309 define([__else],[.else])
    310 define([__endif],[.endif])
    311 define([__if],[.if $1])
    312 
    313 define([equate_if_defined],[ifdef($1,[
    314 [$1] = 1
    315 ],[
    316 [$1] = 0
    317 ])])
    318 
    319 equate_if_defined([DARWIN])
    320 equate_if_defined([LINUX])
    321 equate_if_defined([FREEBSD])
    322 equate_if_defined([SOLARIS])
    323 equate_if_defined([WIN_64])
    324 equate_if_defined([PPC64])
    325 equate_if_defined([X8664])
    326 equate_if_defined([WIN_32])
    327 equate_if_defined([WINDOWS])
    328 
    329 equate_if_defined([HAVE_TLS])
     306define(`__ifdef',`ifdef(`$1',`.if 1',`.if 0')')
     307define(`__ifndef',`ifdef(`$1',`.if 0',`.if 1')')
     308define(`__else',`.else')
     309define(`__endif',`.endif')
     310define(`__if',`.if $1')
     311
     312define(`equate_if_defined',`ifdef($1,`
     313`$1' = 1
     314',`
     315`$1' = 0
     316')')
     317
     318equate_if_defined(`DARWIN')
     319equate_if_defined(`LINUX')
     320equate_if_defined(`FREEBSD')
     321equate_if_defined(`SOLARIS')
     322equate_if_defined(`WIN_64')
     323equate_if_defined(`PPC64')
     324equate_if_defined(`X8664')
     325equate_if_defined(`WIN_32')
     326equate_if_defined(`WINDOWS')
     327
     328equate_if_defined(`HAVE_TLS')
    330329/* DARWIN_GS_HACK is hopefully short-lived */
    331 equate_if_defined([DARWIN_GS_HACK])
    332 
    333 equate_if_defined([TCR_IN_GPR])
     330equate_if_defined(`DARWIN_GS_HACK')
     331
     332equate_if_defined(`TCR_IN_GPR')
    334333
    335334/* Well, so much for that. Maybe this will go away soon ? */
    336 equate_if_defined([WIN32_ES_HACK])
    337 equate_if_defined([SYSCALL_SETS_CARRY_ON_ERROR])
     335equate_if_defined(`WIN32_ES_HACK')
     336equate_if_defined(`SYSCALL_SETS_CARRY_ON_ERROR')
    338337
    339338
     
    341340/* We use (more-or-less) a PowerOpen C frame, except on LinuxPPC32  */
    342341
    343 define([USE_POWEROPEN_C_FRAME],[])
    344 undefine([USE_EABI_C_FRAME])
    345 
    346 ifdef([LINUX],[
    347 ifdef([PPC64],[],[
    348 define([USE_EABI_C_FRAME],[])
    349 undefine([USE_POWEROPEN_C_FRAME])
    350 ])])
    351 
    352 
    353 
    354 
     342define(`USE_POWEROPEN_C_FRAME',`')
     343undefine(`USE_EABI_C_FRAME')
     344
     345ifdef(`LINUX',`
     346ifdef(`PPC64',`',`
     347define(`USE_EABI_C_FRAME',`')
     348undefine(`USE_POWEROPEN_C_FRAME')
     349')')
     350
     351
     352
     353
Note: See TracChangeset for help on using the changeset viewer.