Deleted Added
full compact
link_elf_obj.c (297702) link_elf_obj.c (298069)
1/*-
2 * Copyright (c) 1998-2000 Doug Rabson
3 * Copyright (c) 2004 Peter Wemm
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 12 unchanged lines hidden (view full) ---

21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1998-2000 Doug Rabson
3 * Copyright (c) 2004 Peter Wemm
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 12 unchanged lines hidden (view full) ---

21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <sys/cdefs.h>
29__FBSDID("$FreeBSD: head/sys/kern/link_elf_obj.c 297702 2016-04-08 10:23:48Z kib $");
29__FBSDID("$FreeBSD: head/sys/kern/link_elf_obj.c 298069 2016-04-15 16:10:11Z pfg $");
30
31#include "opt_ddb.h"
32
33#include <sys/param.h>
34#include <sys/systm.h>
35#include <sys/kernel.h>
36#include <sys/lock.h>
37#include <sys/malloc.h>

--- 1137 unchanged lines hidden (view full) ---

1175link_elf_search_symbol(linker_file_t lf, caddr_t value,
1176 c_linker_sym_t *sym, long *diffp)
1177{
1178 elf_file_t ef = (elf_file_t) lf;
1179 u_long off = (uintptr_t) (void *) value;
1180 u_long diff = off;
1181 u_long st_value;
1182 const Elf_Sym *es;
30
31#include "opt_ddb.h"
32
33#include <sys/param.h>
34#include <sys/systm.h>
35#include <sys/kernel.h>
36#include <sys/lock.h>
37#include <sys/malloc.h>

--- 1137 unchanged lines hidden (view full) ---

1175link_elf_search_symbol(linker_file_t lf, caddr_t value,
1176 c_linker_sym_t *sym, long *diffp)
1177{
1178 elf_file_t ef = (elf_file_t) lf;
1179 u_long off = (uintptr_t) (void *) value;
1180 u_long diff = off;
1181 u_long st_value;
1182 const Elf_Sym *es;
1183 const Elf_Sym *best = 0;
1183 const Elf_Sym *best = NULL;
1184 int i;
1185
1186 for (i = 0, es = ef->ddbsymtab; i < ef->ddbsymcnt; i++, es++) {
1187 if (es->st_name == 0)
1188 continue;
1189 st_value = es->st_value;
1190 if (off >= st_value) {
1191 if (off - st_value < diff) {
1192 diff = off - st_value;
1193 best = es;
1194 if (diff == 0)
1195 break;
1196 } else if (off - st_value == diff) {
1197 best = es;
1198 }
1199 }
1200 }
1184 int i;
1185
1186 for (i = 0, es = ef->ddbsymtab; i < ef->ddbsymcnt; i++, es++) {
1187 if (es->st_name == 0)
1188 continue;
1189 st_value = es->st_value;
1190 if (off >= st_value) {
1191 if (off - st_value < diff) {
1192 diff = off - st_value;
1193 best = es;
1194 if (diff == 0)
1195 break;
1196 } else if (off - st_value == diff) {
1197 best = es;
1198 }
1199 }
1200 }
1201 if (best == 0)
1201 if (best == NULL)
1202 *diffp = off;
1203 else
1204 *diffp = diff;
1205 *sym = (c_linker_sym_t) best;
1206
1207 return 0;
1208}
1209

--- 304 unchanged lines hidden ---
1202 *diffp = off;
1203 else
1204 *diffp = diff;
1205 *sym = (c_linker_sym_t) best;
1206
1207 return 0;
1208}
1209

--- 304 unchanged lines hidden ---