Skip to content

Add loongarch support for audit-userspace #229

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions lib/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ nodist_libaudit_la_SOURCES = $(BUILT_SOURCES)
BUILT_SOURCES = actiontabs.h errtabs.h fieldtabs.h flagtabs.h \
fstypetabs.h ftypetabs.h i386_tables.h machinetabs.h \
msg_typetabs.h optabs.h ppc_tables.h s390_tables.h \
s390x_tables.h x86_64_tables.h
s390x_tables.h x86_64_tables.h \
loongarch64_tables.h
if USE_ARM
BUILT_SOURCES += arm_tables.h
endif
Expand All @@ -58,7 +59,8 @@ noinst_PROGRAMS = gen_actiontabs_h gen_errtabs_h gen_fieldtabs_h \
gen_flagtabs_h gen_fstypetabs_h gen_ftypetabs_h gen_i386_tables_h \
gen_machinetabs_h gen_msg_typetabs_h \
gen_optabs_h gen_ppc_tables_h gen_s390_tables_h \
gen_s390x_tables_h gen_x86_64_tables_h
gen_s390x_tables_h gen_x86_64_tables_h \
gen_loongarch64_tables_h
if USE_ARM
noinst_PROGRAMS += gen_arm_tables_h
endif
Expand Down Expand Up @@ -108,6 +110,19 @@ aarch64_tables.h: gen_aarch64_tables_h Makefile
./gen_aarch64_tables_h --lowercase --i2s --s2i aarch64_syscall > $@
endif

gen_loongarch64_tables_h_SOURCES = gen_tables.c gen_tables.h loongarch64_table.h
gen_loongarch64_tables_h_CFLAGS = '-DTABLE_H="loongarch64_table.h"'
$(gen_loongarch64_tables_h_OBJECTS): CC=$(CC_FOR_BUILD)
$(gen_loongarch64_tables_h_OBJECTS): CFLAGS=$(CFLAGS_FOR_BUILD)
$(gen_loongarch64_tables_h_OBJECTS): CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
$(gen_loongarch64_tables_h_OBJECTS): LDFLAGS=$(LDFLAGS_FOR_BUILD)
gen_loongarch64_tables_h$(BUILD_EXEEXT): CC=$(CC_FOR_BUILD)
gen_loongarch64_tables_h$(BUILD_EXEEXT): CFLAGS=$(CFLAGS_FOR_BUILD)
gen_loongarch64_tables_h$(BUILD_EXEEXT): CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
gen_loongarch64_tables_h$(BUILD_EXEEXT): LDFLAGS=$(LDFLAGS_FOR_BUILD)
loongarch64_tables.h: gen_loongarch64_tables_h Makefile
./gen_loongarch64_tables_h --lowercase --i2s --s2i loongarch64_syscall > $@

gen_errtabs_h_SOURCES = gen_tables.c gen_tables.h errtab.h
gen_errtabs_h_CFLAGS = '-DTABLE_H="errtab.h"'
$(gen_errtabs_h_OBJECTS): CC=$(CC_FOR_BUILD)
Expand Down
9 changes: 9 additions & 0 deletions lib/libaudit.c
Original file line number Diff line number Diff line change
Expand Up @@ -1399,6 +1399,7 @@ int audit_determine_machine(const char *arch)
case MACH_86_64: /* fallthrough */
case MACH_PPC64: /* fallthrough */
case MACH_S390X: /* fallthrough */
case MACH_LOONGARCH64: /* fallthrough */
break;
case MACH_PPC64LE: /* 64 bit only */
if (bits && bits != __AUDIT_ARCH_64BIT)
Expand Down Expand Up @@ -1854,10 +1855,18 @@ static int audit_name_to_gid(const char *name, gid_t *gid)
int audit_detect_machine(void)
{
struct utsname uts;
#if 0
if (uname(&uts) == 0)
// strcpy(uts.machine, "x86_64");
return audit_name_to_machine(uts.machine);
return -1;
#endif

if (uname(&uts) == -1)
return -1;

return audit_name_to_machine(uts.machine);

}

#ifndef NO_TABLES
Expand Down
11 changes: 10 additions & 1 deletion lib/libaudit.h
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,14 @@ extern "C" {
#define EM_AARCH64 183
#endif

#ifndef AUDIT_ARCH_LOONGARCH64
#define AUDIT_ARCH_LOONGARCH64 (EM_LOONGARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
#endif

#ifndef EM_LOONGARCH64
#define EM_LOONGARCH64 258
#endif

#ifndef AUDIT_ARCH_AARCH64
#define AUDIT_ARCH_AARCH64 (EM_AARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
#endif
Expand Down Expand Up @@ -579,7 +587,8 @@ typedef enum {
MACH_ALPHA, // Deprecated but has to stay
MACH_ARM,
MACH_AARCH64,
MACH_PPC64LE
MACH_PPC64LE,
MACH_LOONGARCH64
} machine_t;

/* These are the valid audit failure tunable enum values */
Expand Down
7 changes: 7 additions & 0 deletions lib/lookup_table.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
#include "s390_tables.h"
#include "s390x_tables.h"
#include "x86_64_tables.h"
#include "loongarch64_tables.h"
#include "errtabs.h"
#include "fstypetabs.h"
#include "ftypetabs.h"
Expand All @@ -70,6 +71,7 @@ static const struct int_transtab elftab[] = {
{ MACH_PPC, AUDIT_ARCH_PPC },
{ MACH_S390X, AUDIT_ARCH_S390X },
{ MACH_S390, AUDIT_ARCH_S390 },
{ MACH_LOONGARCH64, AUDIT_ARCH_LOONGARCH64 },
#ifdef WITH_ARM
{ MACH_ARM, AUDIT_ARCH_ARM },
#endif
Expand Down Expand Up @@ -123,6 +125,9 @@ int audit_name_to_syscall(const char *sc, int machine)
case MACH_S390:
found = s390_syscall_s2i(sc, &res);
break;
case MACH_LOONGARCH64:
found = loongarch64_syscall_s2i(sc, &res);
break;
#ifdef WITH_ARM
case MACH_ARM:
found = arm_syscall_s2i(sc, &res);
Expand Down Expand Up @@ -159,6 +164,8 @@ const char *audit_syscall_to_name(int sc, int machine)
return s390x_syscall_i2s(sc);
case MACH_S390:
return s390_syscall_i2s(sc);
case MACH_LOONGARCH64:
return loongarch64_syscall_i2s(sc);
#ifdef WITH_ARM
case MACH_ARM:
return arm_syscall_i2s(sc);
Expand Down
Loading