OSDN Git Service

Add (accidentally omited) ChangeLog entry for delta to config/m32r/linux.h
[pf3gnuchains/gcc-fork.git] / libiberty / README
index 92dc202..886bd67 100644 (file)
@@ -15,7 +15,8 @@ The library must be configured from the top source directory.  Don't
 try to run configure in this directory.  Follow the configuration
 instructions in ../README.
 
-Please report bugs and fixes to "bug-gnu-utils@prep.ai.mit.edu".  Thank you.
+Please report bugs to "gcc-bugs@gcc.gnu.org" and send fixes to
+"gcc-patches@gcc.gnu.org".  Thank you.
 
 ADDING A NEW FILE
 =================
@@ -27,62 +28,29 @@ that are "optional" will be included in the library only if "needed."
 To add a new required file, edit Makefile to add the source file
 name to CFILES and the object file to REQUIRED_OFILES.
 
-Adding a new optional file is more fragile.  As a general rule,
-an optional file will be included in the library if it provides
-functionality missing in the "standard" C library.
-For most hosts, the Makefile automatically figures out which
-functionality is missing by compiling and linking a dummy test
-program, and examining the error messages.
-
-So to get this to work, you should do the following:
-
-1) Select one function defined in the file you're adding.
-For example, the getcwd function.
-2) Add that function to the list in the file functions.def.
-3) The name of the new file must be the same as the function
-you've chosen with the .c suffix added.  E.g. getcwd() must be
-defined in getcwd.c.  (The file can define other functions as well.)
-4) In Makefile.in, add the name of the source file (e.g. getcwd.c)
-to CFILES.
-
-The file you've added (e.g. getcwd.c) should compile and work
-on all hosts where it is needed (e.g. not found when linking
-the dummy.c program).  It does not have to work or even
-compile on hosts where it is not needed.
+To add a new optional file, it must provide a single function, and the
+name of the function must be the same as the name of the file.
+
+    * Add the source file name to CFILES.
+
+    * Add the function to name to the funcs shell variable in
+      configure.ac.
 
-HOW THE AUTOMATIC CONFIGURATION WORKS
-=====================================
-
-The libiberty.a target (in RULE1) depends on $(DO_ALSO).
-For normal configurations, DO_ALSO=needed-list.
-
-So needed-list is first made.  The needed-list rule compiles
-dummy.c.  Because dummy.c includes functions.def, the
-resulting object file will contain a call to each of the
-optional functions (for simplicity assume each optional file
-defines a single function).  This object file will be linked
-against the standard libraries (as defined by using $(CC)
-and various flags).  Any function missing will causes the
-linker to emit an error message.  We assume the name
-of the missing function(s) are in the error message(s).
-The awk script find-needed.awk has been generated from
-functions.def.  It is used to search the linker output
-messages for words that match the functions listed in
-functions.def.  The list of functions found is written
-on a single line to the file needed-list.
-
-After needed-list has been generated, the libiberty.a
-target (in RULE1) just calls 'make' recursively.
-It passes the contents of needed-list using the
-definition (expanded) HOST_OFILES="`cat needed-list`".
-It also tells the inferior 'make' to use RULE2.
-
-The inferior 'make' is very conventional:  The main
-rule is $(RULE2) (which is libiberty.a).  It depends
-on a list of object files: $(REQUIRED_OFILES) $(HOST_OFILES)
-(and $(EXTRA_OFILES), which is usually empty).  The superior
-'make' passes in $(HOST_OFILES); the others are fixed
-in the Makefile.
+    * Add the function to the AC_CHECK_FUNCS lists just after the
+      setting of the funcs shell variable.  These AC_CHECK_FUNCS calls
+      are never executed; they are there to make autoheader work
+      better.
+
+    * Consider the special cases of building libiberty; as of this
+      writing, the special cases are newlib and VxWorks.  If a
+      particular special case provides the function, you do not need
+      to do anything.  If it does not provide the function, add the
+      object file to LIBOBJS, and add the function name to the case
+      controlling whether to define HAVE_func.
+
+The optional file you've added (e.g. getcwd.c) should compile and work
+on all hosts where it is needed.  It does not have to work or even
+compile on hosts where it is not needed.
 
 ADDING A NEW CONFIGURATION
 ==========================
@@ -95,34 +63,4 @@ If the fully automatic scheme doesn't work, you may be able to get
 by with defining EXTRA_OFILES in your Makefile stub.  This is
 a list of object file names that should be treated as required
 for this configuration - they will be included in libiberty.a,
-regardless of whatever might be in the C library.  Moreover,
-when the dummy.c program is linked, it will be linked with
-$(EXTRA_OFILES).  Therefore, if a function in functions.def
-is defined by one of the EXTRA_OFILES, it will not be listed as
-"needed".  Thus if your hal9000 host needs a special implementation
-of getcwd, you can just create hal9000-getcwd.c, and define:
-       EXTRA_OFILES=hal9000-getcwd.o
-Or if you want to use the libiberty version of strstr(),
-even though there is a version in the C library (it might be
-buggy or slow), just define:
-       EXTRA_OFILES=strstr.o
-
-You can create a "manual" host configuration FOO with a file
-config/mh-FOO.  In it, the HOST_OFILES macro should explicitly
-list that subset of the optional files that should be in the
-library.  You should also set:
-       DO_ALSO =
-This overrides all of the magic needed to automatically
-determine which files are "needed."  However, keeping that list
-up to date is another matter...
-
-HOW THE MANUAL CONFIGURATION WORKS
-==================================
-
-This also uses a recursive make, but the superior make
-does not do anything interesting - it just calls the
-inferior make with HOST_OFILES defined as $(HOST_OFILES),
-which is the list you created in your configuration.
-
-You probably don't want to depend on manual configuration,
-because keeping the HOST_OFILES list up-to-date will be a pain.
+regardless of whatever might be in the C library.