ldentry.c revision 1007fd6fd24227460e77ce89f5ca85641a85a576
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 1988 AT&T
* All Rights Reserved
*
*/
#include <stdio.h>
#include <string.h>
#include "msg.h"
#include "_libld.h"
/*
* Print a virtual address map of input and output sections together with
* multiple symbol definitions (if they exist).
*/
static void
{
}
void
{
else
continue;
int os_isdescs_idx;
/*
* Although there seems little point in printing
* discarded (empty) sections, especially as
* diagnostics under -Dsegments,details are more
* informative, continue printing them. There
* are user scripts, fragile to say the least,
* that grep(1) through load-map output to
* discover object requirements. These scripts
* don't grep for all input sections types (ie.
* .picdata), and have become dependent on null
* sections (ie. .text) existing in the
* load-map output.
*/
addr = 0;
} else {
}
MSG_INTL(MSG_STR_NULL)));
}
}
}
return;
/*
* Check for any multiply referenced symbols (ie. symbols that have
* been overridden from a shared library).
*/
continue;
/*
* Files that define a symbol are saved on the `sa_dfiles' list.
* Ignore symbols that aren't needed, and any special symbols
* that the link editor may produce (symbols of type ABS and
* COMMON are not recorded in the first place, however functions
* like _init() and _fini() commonly have multiple occurrences).
*/
continue;
if (symbol_title)
ducp);
/*
* Ignore the referenced symbol.
*/
adcp);
}
}
}
/*
* Traverse the entrance criteria list searching for those sections that haven't
* been met and print error message. (only in the case of reordering)
*/
void
{
/*
* Try to give as much information to the user about the specific
* line in the mapfile. If the line contains a file name then
* output the filename too. Hence we have two warning lines -
* one for criterias where a filename is used and the other
* for those without a filename.
*/
/*
* No warning if any of the following hold:
* - The segment has no entrance criteria requiring
* input section sorting (FLG_SG_IS_ORDER not set).
* - The entrance criteria was used to place a section.
* - The specific entrance criteria does not require sorting
*/
continue;
} else {
}
}
}