2003-12-03 Marco Gerards <metgerards@student.han.nl>
* fs/ext2.c (pupa_ext2_label): New function. (pupa_ext2_fs): Added label. * fs/fat.c (pupa_fat_label): New function. (pupa_fat_fs): Added label. * include/pupa/fs.h (struct pupa_fs): Added prototype label. * kern/misc.c (pupa_strndup): New function. * include/pupa/misc.h (pupa_strndup): New prototype. * include/pupa/normal.h: Include <pupa/err.h>. (pupa_set_history): New prototype. (pupa_iterate_commands): New prototype. * normal/cmdline.c: Include <pupa/machine/partition.h>, <pupa/disk.h>, <pupa/file.h>. (hist_size): New variable. (hist_lines): Likewise. (hist_end): Likewise. (hist_used): Likewise. (pupa_set_history): New function. (pupa_history_get): Likewise. (pupa_history_add): Likewise. (pupa_history_replace): Likewise. (pupa_tab_complete): Likewise. (pupa_cmdline_run): Added tab completion and history buffer. Tab completion shows partitionnames while completing partitions, this feature was suggested by Jeff Bailey. * normal/command.c (pupa_iterate_commands): New function. * normal/main.c (PUPA_DEFAULT_HISTORY_SIZE): New macro. (pupa_normal_init): Initialize history buffer. (PUPA_MOD_INIT): Likewise. (pupa_normal_fini): Free the history buffer. (PUPA_MOD_FINI): Likewise. * util/console.c (pupa_ncurses_getkey): Accept 127 as backspace key. * aclocal.m4 (pupa_I386_CHECK_REGPARM_BUG): New DEFUN. * configure.ac [i386]: Check for regparam bug. (NESTED_FUNC_ATTR) [! i386]: Defined.
This commit is contained in:
parent
1f7315a3de
commit
5aded270b6
15 changed files with 793 additions and 6 deletions
39
aclocal.m4
vendored
39
aclocal.m4
vendored
|
@ -290,3 +290,42 @@ else
|
|||
AC_MSG_ERROR([neither end nor _end is defined])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Check if the C compiler has a bug while using nested functions when
|
||||
dnl mregparm is used on the i386. Some gcc versions do not pass the third
|
||||
dnl parameter correctly to the nested function.
|
||||
dnl Written by Marco Gerards.
|
||||
AC_DEFUN(pupa_I386_CHECK_REGPARM_BUG,
|
||||
[AC_REQUIRE([AC_PROG_CC])
|
||||
AC_MSG_CHECKING([if GCC has the regparm=3 bug])
|
||||
AC_CACHE_VAL(pupa_cv_i386_check_nested_functions,
|
||||
[AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||||
[[int *p;
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
int test;
|
||||
|
||||
int __attribute__ ((__regparm__ (3))) nestedfunc (int a, int b, int c)
|
||||
{
|
||||
return (&test == p);
|
||||
}
|
||||
|
||||
p = &test;
|
||||
return nestedfunc (0, 0, 0);
|
||||
}
|
||||
]])],
|
||||
[pupa_cv_i386_check_nested_functions=yes],
|
||||
[pupa_cv_i386_check_nested_functions=no])])
|
||||
|
||||
AC_MSG_RESULT([$pupa_cv_i386_check_nested_functions])
|
||||
|
||||
if test "x$pupa_cv_i386_check_nested_functions" = xyes; then
|
||||
AC_DEFINE([NESTED_FUNC_ATTR],
|
||||
[__attribute__ ((__regparm__ (2)))],
|
||||
[Catch gcc bug])
|
||||
else
|
||||
AC_DEFINE([NESTED_FUNC_ATTR], [], [Catch gcc bug])
|
||||
fi
|
||||
])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue