mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
R_MIPS_PC32 is a GNU extension, its definition is available in glibc
only since 2.39 (released in 2024), and not available in musl libc yet.
Provide our own definition for R_MIPS_PC32 and use it if necessary to
fix relocs tool building on musl and older glibc systems.
Fixes: ff79d31eb5 ("mips: Add support for PC32 relocations in vmlinux")
Signed-off-by: Yao Zi <me@ziyao.cc>
Link: https://patch.msgid.link/20260202041610.61389-1-me@ziyao.cc
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
54 lines
967 B
C
54 lines
967 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef RELOCS_H
|
|
#define RELOCS_H
|
|
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
#include <inttypes.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
#include <unistd.h>
|
|
#include <elf.h>
|
|
#include <byteswap.h>
|
|
#define USE_BSD
|
|
#include <endian.h>
|
|
#include <regex.h>
|
|
|
|
void die(char *fmt, ...);
|
|
|
|
/*
|
|
* Introduced for MIPSr6
|
|
*/
|
|
#ifndef R_MIPS_PC21_S2
|
|
#define R_MIPS_PC21_S2 60
|
|
#endif
|
|
|
|
#ifndef R_MIPS_PC26_S2
|
|
#define R_MIPS_PC26_S2 61
|
|
#endif
|
|
|
|
/*
|
|
* GNU extension that available in glibc only since 2023, not available on musl.
|
|
*/
|
|
#ifndef R_MIPS_PC32
|
|
#define R_MIPS_PC32 248
|
|
#endif
|
|
|
|
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
|
|
|
enum symtype {
|
|
S_ABS,
|
|
S_REL,
|
|
S_SEG,
|
|
S_LIN,
|
|
S_NSYMTYPES
|
|
};
|
|
|
|
void process_32(FILE *fp, int as_text, int as_bin,
|
|
int show_reloc_info, int keep_relocs);
|
|
void process_64(FILE *fp, int as_text, int as_bin,
|
|
int show_reloc_info, int keep_relocs);
|
|
#endif /* RELOCS_H */
|