38
38
dnl Erich Boleyn and modified by Yoshinori K. Okuji.
39
39
AC_DEFUN([grub_ASM_USCORE],
40
40
[AC_REQUIRE([AC_PROG_CC])
41
AC_REQUIRE([AC_PROG_EGREP])
41
42
AC_MSG_CHECKING([if C symbols get an underscore after compilation])
42
43
AC_CACHE_VAL(grub_cv_asm_uscore,
43
44
[cat > conftest.c <<\EOF
56
57
AC_MSG_ERROR([${CC-cc} failed to produce assembly code])
59
if grep _func conftest.s >/dev/null 2>&1; then
60
if $EGREP '(^|[^_[:alnum]])_func' conftest.s >/dev/null 2>&1; then
60
62
grub_cv_asm_uscore=yes
62
65
grub_cv_asm_uscore=no
67
if test "x$grub_cv_asm_uscore" = xyes; then
68
AC_DEFINE_UNQUOTED([HAVE_ASM_USCORE], $grub_cv_asm_uscore,
69
[Define if C symbols get an underscore after compilation])
72
70
AC_MSG_RESULT([$grub_cv_asm_uscore])
94
92
grub_cv_prog_objcopy_absolute=yes
95
93
for link_addr in 0x2000 0x8000 0x7C00; do
96
if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib ${TARGET_IMG_LDFLAGS_AC}$link_addr conftest.o -o conftest.exec]); then :
94
if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},$link_addr conftest.o -o conftest.exec]); then :
98
96
AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr])
236
234
grub_tmp_data32="data32;"
239
AC_DEFINE_UNQUOTED([ADDR32], $grub_tmp_addr32,
240
[Define it to \"addr32\" or \"addr32;\" to make GAS happy])
241
AC_DEFINE_UNQUOTED([DATA32], $grub_tmp_data32,
242
[Define it to \"data32\" or \"data32;\" to make GAS happy])
237
ADDR32=$grub_tmp_addr32
238
DATA32=$grub_tmp_data32
244
240
AC_MSG_RESULT([$grub_cv_i386_asm_prefix_requirement])])
247
dnl Older versions of GAS require that absolute indirect calls/jumps are
248
dnl not prefixed with `*', while later versions warn if not prefixed.
249
AC_DEFUN([grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK],
250
[AC_REQUIRE([AC_PROG_CC])
252
[whether an absolute indirect call/jump must not be prefixed with an asterisk])
253
AC_CACHE_VAL(grub_cv_i386_asm_absolute_without_asterisk,
254
[cat > conftest.s <<\EOF
261
if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then
262
grub_cv_i386_asm_absolute_without_asterisk=no
264
grub_cv_i386_asm_absolute_without_asterisk=yes
269
if test "x$grub_cv_i386_asm_absolute_without_asterisk" = xyes; then
270
AC_DEFINE([ABSOLUTE_WITHOUT_ASTERISK], 1,
271
[Define it if GAS requires that absolute indirect calls/jumps are not prefixed with an asterisk])
274
AC_MSG_RESULT([$grub_cv_i386_asm_absolute_without_asterisk])])
277
243
dnl Check what symbol is defined as a bss start symbol.
278
244
dnl Written by Michael Hohmoth and Yoshinori K. Okuji.
279
245
AC_DEFUN([grub_CHECK_BSS_START_SYMBOL],
306
272
AC_MSG_RESULT([$grub_cv_check_uscore_edata_symbol])
308
AH_TEMPLATE([BSS_START_SYMBOL], [Define it to one of __bss_start, edata and _edata])
310
274
if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" = xyes; then
311
AC_DEFINE([BSS_START_SYMBOL], [__bss_start])
275
BSS_START_SYMBOL=__bss_start
312
276
elif test "x$grub_cv_check_edata_symbol" = xyes; then
313
AC_DEFINE([BSS_START_SYMBOL], [edata])
277
BSS_START_SYMBOL=edata
314
278
elif test "x$grub_cv_check_uscore_edata_symbol" = xyes; then
315
AC_DEFINE([BSS_START_SYMBOL], [_edata])
279
BSS_START_SYMBOL=_edata
317
281
AC_MSG_ERROR([none of __bss_start, edata or _edata is defined])
341
305
AC_MSG_RESULT([$grub_cv_check_uscore_end_symbol])
343
AH_TEMPLATE([END_SYMBOL], [Define it to either end or _end])
345
307
if test "x$grub_cv_check_end_symbol" = xyes; then
346
AC_DEFINE([END_SYMBOL], [end])
347
309
elif test "x$grub_cv_check_uscore_end_symbol" = xyes; then
348
AC_DEFINE([END_SYMBOL], [_end])
350
312
AC_MSG_ERROR([neither end nor _end is defined])
368
330
AC_MSG_ERROR([${CC-cc} failed to produce assembly code])
370
332
if grep __enable_execute_stack conftest.s >/dev/null 2>&1; then
371
AC_DEFINE([NEED_ENABLE_EXECUTE_STACK], 1,
372
[Define to 1 if GCC generates calls to __enable_execute_stack()])
333
NEED_ENABLE_EXECUTE_STACK=1
373
334
AC_MSG_RESULT([yes])
336
NEED_ENABLE_EXECUTE_STACK=0
375
337
AC_MSG_RESULT([no])