* acinclude.m4 (HAVE_ASM_USCORE): Transformed into a variable.
(ADDR32): Likewise.
(DATA32): Likewise.
(BSS_START_SYMBOL): Likewise.
(END_SYMBOL): Likewise.
(NEED_ENABLE_EXECUTE_STACK): Likewise. All users updated.
(grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK): Removed.
* config.h.in: New file.
* configure.ac: Use config-util.h as config define file.
Rename MACHINE into GRUB_MACHINE. All users updated.
(NEED_REGISTER_FRAME_INFO): Transformed into a variable. All users
updated.
(NESTED_FUNC_ATTR): Likewise.
Substitue new variables.
(COND_HAVE_ASM_USCORE): New conditional.
* grub-core/Makefile.am (ASM_PREFIX): New variable.
(kernel_syms.lst): Use ASM_PREFIX.
* grub-core/kern/emu/console.c: Include config-util.h.
* grub-core/kern/emu/misc.c: Likewise.
* grub-core/kern/emu/mm.c: Likewise.
* include/grub/emu/misc.h: Likewise.
* include/grub/libgcc.h: Likewise.
config.cache
config.guess
config.h
-config.h.in
+config-util.h
+config-util.h.in
config.log
config.status
config.sub
+2010-09-19 Vladimir Serbinenko <phcoder@gmail.com>
+
+ Split config.h for util and core.
+
+ * acinclude.m4 (HAVE_ASM_USCORE): Transformed into a variable.
+ (ADDR32): Likewise.
+ (DATA32): Likewise.
+ (BSS_START_SYMBOL): Likewise.
+ (END_SYMBOL): Likewise.
+ (NEED_ENABLE_EXECUTE_STACK): Likewise. All users updated.
+ (grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK): Removed.
+ * config.h.in: New file.
+ * configure.ac: Use config-util.h as config define file.
+ Rename MACHINE into GRUB_MACHINE. All users updated.
+ (NEED_REGISTER_FRAME_INFO): Transformed into a variable. All users
+ updated.
+ (NESTED_FUNC_ATTR): Likewise.
+ Substitue new variables.
+ (COND_HAVE_ASM_USCORE): New conditional.
+ * grub-core/Makefile.am (ASM_PREFIX): New variable.
+ (kernel_syms.lst): Use ASM_PREFIX.
+ * grub-core/kern/emu/console.c: Include config-util.h.
+ * grub-core/kern/emu/misc.c: Likewise.
+ * grub-core/kern/emu/mm.c: Likewise.
+ * include/grub/emu/misc.h: Likewise.
+ * include/grub/libgcc.h: Likewise.
+
2010-09-19 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/term/efi/console.c (efi_codes): Fix GRUB_TERM_KEY_*
fi
if $EGREP '(^|[^_[:alnum]])_func' conftest.s >/dev/null 2>&1; then
+ HAVE_ASM_USCORE=1
grub_cv_asm_uscore=yes
else
+ HAVE_ASM_USCORE=0
grub_cv_asm_uscore=no
fi
rm -f conftest*])
-if test "x$grub_cv_asm_uscore" = xyes; then
- AC_DEFINE_UNQUOTED([HAVE_ASM_USCORE], $grub_cv_asm_uscore,
- [Define if C symbols get an underscore after compilation])
-fi
-
AC_MSG_RESULT([$grub_cv_asm_uscore])
])
grub_tmp_data32="data32;"
fi
-AC_DEFINE_UNQUOTED([ADDR32], $grub_tmp_addr32,
- [Define it to \"addr32\" or \"addr32;\" to make GAS happy])
-AC_DEFINE_UNQUOTED([DATA32], $grub_tmp_data32,
- [Define it to \"data32\" or \"data32;\" to make GAS happy])
+ADDR32=$grub_tmp_addr32
+DATA32=$grub_tmp_data32
AC_MSG_RESULT([$grub_cv_i386_asm_prefix_requirement])])
-dnl Older versions of GAS require that absolute indirect calls/jumps are
-dnl not prefixed with `*', while later versions warn if not prefixed.
-AC_DEFUN([grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK],
-[AC_REQUIRE([AC_PROG_CC])
-AC_MSG_CHECKING(dnl
-[whether an absolute indirect call/jump must not be prefixed with an asterisk])
-AC_CACHE_VAL(grub_cv_i386_asm_absolute_without_asterisk,
-[cat > conftest.s <<\EOF
- lcall *(offset)
-offset:
- .long 0
- .word 0
-EOF
-
-if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then
- grub_cv_i386_asm_absolute_without_asterisk=no
-else
- grub_cv_i386_asm_absolute_without_asterisk=yes
-fi
-
-rm -f conftest*])
-
-if test "x$grub_cv_i386_asm_absolute_without_asterisk" = xyes; then
- AC_DEFINE([ABSOLUTE_WITHOUT_ASTERISK], 1,
- [Define it if GAS requires that absolute indirect calls/jumps are not prefixed with an asterisk])
-fi
-
-AC_MSG_RESULT([$grub_cv_i386_asm_absolute_without_asterisk])])
-
-
dnl Check what symbol is defined as a bss start symbol.
dnl Written by Michael Hohmoth and Yoshinori K. Okuji.
AC_DEFUN([grub_CHECK_BSS_START_SYMBOL],
AC_MSG_RESULT([$grub_cv_check_uscore_edata_symbol])
-AH_TEMPLATE([BSS_START_SYMBOL], [Define it to one of __bss_start, edata and _edata])
-
if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" = xyes; then
- AC_DEFINE([BSS_START_SYMBOL], [__bss_start])
+ BSS_START_SYMBOL=__bss_start
elif test "x$grub_cv_check_edata_symbol" = xyes; then
- AC_DEFINE([BSS_START_SYMBOL], [edata])
+ BSS_START_SYMBOL=edata
elif test "x$grub_cv_check_uscore_edata_symbol" = xyes; then
- AC_DEFINE([BSS_START_SYMBOL], [_edata])
+ BSS_START_SYMBOL=_edata
else
AC_MSG_ERROR([none of __bss_start, edata or _edata is defined])
fi
AC_MSG_RESULT([$grub_cv_check_uscore_end_symbol])
-AH_TEMPLATE([END_SYMBOL], [Define it to either end or _end])
-
if test "x$grub_cv_check_end_symbol" = xyes; then
- AC_DEFINE([END_SYMBOL], [end])
+ END_SYMBOL=end
elif test "x$grub_cv_check_uscore_end_symbol" = xyes; then
- AC_DEFINE([END_SYMBOL], [_end])
+ END_SYMBOL=_end
else
AC_MSG_ERROR([neither end nor _end is defined])
fi
AC_MSG_ERROR([${CC-cc} failed to produce assembly code])
fi
if grep __enable_execute_stack conftest.s >/dev/null 2>&1; then
- AC_DEFINE([NEED_ENABLE_EXECUTE_STACK], 1,
- [Define to 1 if GCC generates calls to __enable_execute_stack()])
+ NEED_ENABLE_EXECUTE_STACK=1
AC_MSG_RESULT([yes])
else
+ NEED_ENABLE_EXECUTE_STACK=0
AC_MSG_RESULT([no])
fi
rm -f conftest*
--- /dev/null
+#if defined (GRUB_UTIL) || !defined (GRUB_MACHINE)
+#include <config-util.h>
+#define NESTED_FUNC_ATTR
+#else
+/* Define if C symbols get an underscore after compilation. */
+#define HAVE_ASM_USCORE @HAVE_ASM_USCORE@
+/* Define it to \"addr32\" or \"addr32;\" to make GAS happy. */
+#define ADDR32 @ADDR32@
+/* Define it to \"data32\" or \"data32;\" to make GAS happy. */
+#define DATA32 @DATA32@
+/* Define it to one of __bss_start, edata and _edata. */
+#define BSS_START_SYMBOL @BSS_START_SYMBOL@
+/* Define it to either end or _end. */
+#define END_SYMBOL @END_SYMBOL@
+/* Name of package. */
+#define PACKAGE "@PACKAGE@"
+/* Version number of package. */
+#define VERSION "@VERSION@"
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "@PACKAGE_STRING@"
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "@PACKAGE_VERSION@"
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "@PACKAGE_NAME@"
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@"
+/* Define to 1 if GCC generates calls to __enable_execute_stack(). */
+#define NEED_ENABLE_EXECUTE_STACK @NEED_ENABLE_EXECUTE_STACK@
+/* Define to 1 if GCC generates calls to __register_frame_info(). */
+#define NEED_REGISTER_FRAME_INFO @NEED_REGISTER_FRAME_INFO@
+
+#if defined(__i386__)
+#define NESTED_FUNC_ATTR __attribute__ ((__regparm__ (1)))
+#else
+#define NESTED_FUNC_ATTR
+#endif
+
+#endif
AM_INIT_AUTOMAKE()
AC_PREREQ(2.60)
AC_CONFIG_SRCDIR([include/grub/dl.h])
-AC_CONFIG_HEADER([config.h])
+AC_CONFIG_HEADER([config-util.h])
# Program name transformations
AC_ARG_PROGRAM
mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;;
sparc64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
esac
-machine_CPPFLAGS="$machine_CPPFLAGS -DMACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
+machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
HOST_CPPFLAGS="$HOST_CPPFLAGS $machine_CPPFLAGS"
TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
case "${host_os}" in
cygwin) TARGET_OBJ2ELF='$(grub_utildir)/grub-pe2elf';
# FIXME: put proper test here
- AC_DEFINE([NEED_REGISTER_FRAME_INFO], 1,
- [Define to 1 if GCC generates calls to __register_frame_info()])
+ NEED_REGISTER_FRAME_INFO=1
;;
- *) ;;
+ *) NEED_REGISTER_FRAME_INFO=0 ;;
esac
AC_MSG_RESULT([$TARGET_OBJ2ELF])
CFLAGS="$TARGET_CFLAGS"
grub_I386_ASM_PREFIX_REQUIREMENT
grub_I386_ASM_ADDR32
- grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK
-else
- AC_DEFINE([NESTED_FUNC_ATTR], [], [Catch gcc bug])
fi
-AH_BOTTOM([#if defined(__i386__) && !defined(GRUB_UTIL)
-#define NESTED_FUNC_ATTR __attribute__ ((__regparm__ (1)))
-#else
-#define NESTED_FUNC_ATTR
-#endif])
-
AC_ARG_ENABLE([efiemu],
[AS_HELP_STRING([--enable-efiemu],
[build and install the efiemu runtimes (default=guessed)])])
AS_IF([test x$TARGET_APPLE_CC = x1],
[AC_SUBST([USE_APPLE_CC_FIXES], yes)])
+AC_SUBST(HAVE_ASM_USCORE)
+AC_SUBST(ADDR32)
+AC_SUBST(DATA32)
+AC_SUBST(BSS_START_SYMBOL)
+AC_SUBST(END_SYMBOL)
+AC_SUBST(PACKAGE)
+AC_SUBST(VERSION)
+AC_SUBST(NEED_ENABLE_EXECUTE_STACK)
+AC_SUBST(NEED_REGISTER_FRAME_INFO)
+
#
# Automake conditionals
#
AM_CONDITIONAL([COND_APPLE_CC], [test x$TARGET_APPLE_CC = x1])
AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
+AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
+
# Output files.
grub_CHECK_LINK_DIR
if test x"$link_dir" = xyes ; then
AC_CONFIG_FILES([docs/Makefile])
AC_CONFIG_FILES([util/bash-completion.d/Makefile])
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
+AC_CONFIG_FILES([config.h])
AC_OUTPUT
[
CLEANFILES += symlist.c
BUILT_SOURCES += symlist.c
+if COND_HAVE_ASM_USCORE
+ASM_PREFIX=1
+else
+ASM_PREFIX=
+endif
+
noinst_DATA += kernel_syms.lst
+
kernel_syms.lst: $(KERNEL_HEADER_FILES) $(top_builddir)/config.h
$(TARGET_CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) $(CPPFLAGS) $(CFLAGS) -DGRUB_SYMBOL_GENERATOR=1 $^ >kernel_syms.input
- if grep "^#define HAVE_ASM_USCORE" $(top_builddir)/config.h; then u="_"; else u=""; fi; \
cat kernel_syms.input | grep -v '^#' | sed -n \
- -e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/defined '"$$u"'kernel \1/;p;}' \
- -e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/defined '"$$u"' kernel \1/;p;}' \
+ -e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/defined '"$(ASM_PREFIX)"'kernel \1/;p;}' \
+ -e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/defined '"$(ASM_PREFIX)"' kernel \1/;p;}' \
| sort -u >$@
rm -f kernel_syms.input
CLEANFILES += kernel_syms.lst
*/
#include <config.h>
+#include <config-util.h>
/* For compatibility. */
#ifndef A_NORMAL
# include <ncurses.h>
#elif defined(HAVE_CURSES_H)
# include <curses.h>
+#else
+#error What the hell?
#endif
static int grub_console_attr = A_NORMAL;
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <config-util.h>
#include <config.h>
#include <errno.h>
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <config-util.h>
+
#include <grub/types.h>
#include <grub/err.h>
#include <grub/mm.h>
void abort (void) __attribute__ ((alias ("grub_abort")));
#endif
-#if defined(NEED_ENABLE_EXECUTE_STACK) && !defined(GRUB_UTIL) && !defined(GRUB_MACHINE_EMU)
+#if NEED_ENABLE_EXECUTE_STACK && !defined(GRUB_UTIL) && !defined(GRUB_MACHINE_EMU)
/* Some gcc versions generate a call to this function
in trampolines for nested functions. */
void __enable_execute_stack (void *addr __attribute__ ((unused)))
}
#endif
-#if defined (NEED_REGISTER_FRAME_INFO) && !defined(GRUB_UTIL)
+#if NEED_REGISTER_FRAME_INFO && !defined(GRUB_UTIL)
void __register_frame_info (void)
{
}
#ifndef GRUB_EMU_MISC_H
#define GRUB_EMU_MISC_H 1
+#include <config-util.h>
+#include <stdarg.h>
+
#include <grub/symbol.h>
#include <grub/types.h>
#include <grub/util/libzfs.h>
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <config.h>
+/* We need to include config-util.h.in for HAVE_*. */
+#include <config-util.h>
/* On x86 these functions aren't really needed. Save some space. */
#if !defined (__i386__) && !defined (__x86_64__)
grub_uint64_t EXPORT_FUNC(grub_divmod64) (grub_uint64_t n,
grub_uint32_t d, grub_uint32_t *r);
-#if defined(NEED_ENABLE_EXECUTE_STACK) && !defined(GRUB_UTIL)
+#if NEED_ENABLE_EXECUTE_STACK && !defined(GRUB_UTIL)
void EXPORT_FUNC(__enable_execute_stack) (void *addr);
#endif
-#if defined (NEED_REGISTER_FRAME_INFO) && !defined(GRUB_UTIL)
+#if NEED_REGISTER_FRAME_INFO && !defined(GRUB_UTIL)
void EXPORT_FUNC (__register_frame_info) (void);
void EXPORT_FUNC (__deregister_frame_info) (void);
#endif
rewrite grub-mkimage to generate valid ELF files. */
#define GRUB_KERNEL_POWERPC_IEEE1275_MOD_GAP 0x8000
-#ifdef MACHINE
+#ifdef GRUB_MACHINE
#define GRUB_OFFSETS_CONCAT_(a,b,c) a ## b ## c
#define GRUB_OFFSETS_CONCAT(a,b,c) GRUB_OFFSETS_CONCAT_(a,b,c)
-#define GRUB_KERNEL_MACHINE_MOD_ALIGN GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _MOD_ALIGN)
-#define GRUB_KERNEL_MACHINE_MOD_GAP GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _MOD_GAP)
-#define GRUB_KERNEL_MACHINE_TOTAL_MODULE_SIZE GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _TOTAL_MODULE_SIZE)
-#define GRUB_KERNEL_MACHINE_KERNEL_IMAGE_SIZE GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _KERNEL_IMAGE_SIZE)
-#define GRUB_KERNEL_MACHINE_COMPRESSED_SIZE GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _COMPRESSED_SIZE)
-
-#define GRUB_KERNEL_MACHINE_PREFIX GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _PREFIX)
-#define GRUB_KERNEL_MACHINE_PREFIX_END GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _PREFIX_END)
-#define GRUB_BOOT_MACHINE_KERNEL_SEG GRUB_OFFSETS_CONCAT (GRUB_BOOT_, MACHINE, _KERNEL_SEG)
-#define GRUB_MEMORY_MACHINE_UPPER GRUB_OFFSETS_CONCAT (GRUB_MEMORY_, MACHINE, _UPPER)
-#define GRUB_KERNEL_MACHINE_RAW_SIZE GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _RAW_SIZE)
-#define GRUB_KERNEL_MACHINE_INSTALL_BSD_PART GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _INSTALL_BSD_PART)
-#define GRUB_KERNEL_MACHINE_INSTALL_DOS_PART GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, MACHINE, _INSTALL_DOS_PART)
+#define GRUB_KERNEL_MACHINE_MOD_ALIGN GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _MOD_ALIGN)
+#define GRUB_KERNEL_MACHINE_MOD_GAP GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _MOD_GAP)
+#define GRUB_KERNEL_MACHINE_TOTAL_MODULE_SIZE GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _TOTAL_MODULE_SIZE)
+#define GRUB_KERNEL_MACHINE_KERNEL_IMAGE_SIZE GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _KERNEL_IMAGE_SIZE)
+#define GRUB_KERNEL_MACHINE_COMPRESSED_SIZE GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _COMPRESSED_SIZE)
+
+#define GRUB_KERNEL_MACHINE_PREFIX GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _PREFIX)
+#define GRUB_KERNEL_MACHINE_PREFIX_END GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _PREFIX_END)
+#define GRUB_BOOT_MACHINE_KERNEL_SEG GRUB_OFFSETS_CONCAT (GRUB_BOOT_, GRUB_MACHINE, _KERNEL_SEG)
+#define GRUB_MEMORY_MACHINE_UPPER GRUB_OFFSETS_CONCAT (GRUB_MEMORY_, GRUB_MACHINE, _UPPER)
+#define GRUB_KERNEL_MACHINE_RAW_SIZE GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _RAW_SIZE)
+#define GRUB_KERNEL_MACHINE_INSTALL_BSD_PART GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _INSTALL_BSD_PART)
+#define GRUB_KERNEL_MACHINE_INSTALL_DOS_PART GRUB_OFFSETS_CONCAT (GRUB_KERNEL_, GRUB_MACHINE, _INSTALL_DOS_PART)
#endif
#ifndef ASM_FILE
#define LOCAL(sym) L_ ## sym
/* Add an underscore to a C symbol in assembler code if needed. */
-#ifdef HAVE_ASM_USCORE
+#if HAVE_ASM_USCORE
# define EXT_C(sym) _ ## sym
#else
# define EXT_C(sym) sym