Estimated hours taken: 1
Remove the libc6 detection routines. It appears the new upstream version
of Boehm GC handles this correctly now.
README.Linux:
Remove mention of the problem - it shouldn't happen anymore.
configure.in:
Remove the old mercury_boehm_gc
boehm_gc/os_dep.c:
Use the upstream method for checking for libc version using
__GLIBC__.
boehm_gc/mercury_boehm_gc_conf.h.in:
Remove this file, it is no longer necessary.
Estimated hours taken: 2
Fix the boehm_gc problem with libc6 on Linux systems.
This is a Mercury only fix because the boehm_gc doesn't use autoconf.
(It's not the world's most elegant fix, but it does fix the problem).
Mmakefile:
Remove boehm_gc/mercury_boehm_gc_conf.h when cleaning up.
README.Linux:
Update the documentation about this fix.
configure.in:
Check whether we should #include <asm/sigcontext.h> in
the GC.
boehm_gc/os_dep.c:
Only include <asm/sigcontext.h> if it will work.
boehm_gc/mercury_boehm_gc_conf.h.in:
New configuration header file.
Estimated hours taken: 0.5
boehm_gc/os_dep.c:
Fix a problem with the #ifdefs so that it works on hydra.
README.Linux:
Update to reflect recent developments.
README.Linux-PPC:
New file to document the Linux/PowerPC port.
Estimated hours taken: 16
Change mgnuc and ml to support the same
compilation model options as mmc.
Allow the user to mix `--grade foo' options with
other options that affect the grade such as `--profiling'.
Compute the final grade to link with from the options.
Also add a few new options and grade modifiers.
compiler/options.m:
compiler/mercury_compile.m:
Add `--profile-time' and `--profile-calls' options.
Change `--profiling' to now just imply both of those.
Add `--pic-reg' option (just implies `-DPIC_REG' in cflags).
compiler/handle_options.m:
Add support for grade modifiers `.proftime' and `.profcalls'.
Make `.debug' a grade modifier, rather than having a base
grade `debug'.
scripts/init_grade_options.sh-subr:
scripts/parse_grade_options.sh-subr:
New files containing sh subroutines for parsing grade-related
options.
configure.in:
bindist/bindist.configure.in:
Use AC_SUBST_FILE to allow #inclusion of the above-mentioned
`.sh-subr' files.
scripts/ml.in:
scripts/mgnuc.in:
Use the above-mentioned sh subroutines.
scripts/ml.in:
compiler/mercury_compile.m:
compiler/handle_options.m:
Compute the final grade to link with from the various
grade-related options.
scripts/mgnuc.in:
Support the `--inline-alloc' option.
doc/user_guide.texi:
README.Linux:
Document the above changes.
runtime/mach_deps/i386_regs.h:
If `PIC_REG' is defined, don't use %ebx,
even if we're not compiling in PIC.
README.Linux:
Update the documentation: when using shared libraries, it's more
efficient to compile your main program with just `-DPIC_REG'
rather than `-fpic'; `-DPIC_REG' is enough to make it work,
and doesn't slow it down as much as `-fpic' does.
Estimated hours taken: 8
Finish off the stuff needed to support ELF shared libraries on Linux.
mercury/NEWS:
Mention that we now support ELF shared libraries on Linux.
mercury/README.Linux:
Document the use of shared libraries on Linux.
mercury/configure.in:
Enable the use of shared libraries on Linux.
Add some documentation regarding the use of position-independent
code on Solaris.
For systems that don't support shared libraries, set
CFLAGS_FOR_PIC to empty, not `-fpic'. (Previously
CFLAGS_FOR_PIC wasn't used on such systems, but now it
is used when creating boehm_gc/libgc.a.)