----- Original Message -----
> > If I understand correctly it's only adding arch detection and syscall
> > tables to ausyscall. Why are these syscall table conditional?
> 
> To reduce the number of text relocations in libaudit. Libaudit links against a
> number of applications and text relocations eats memory and increases startup
> time.
 
Is that really an issue with the current code?  The gentab.c code was designed 
to avoid text relocations.

At least on x86_64 (which, true, is especially well-designed for this), there 
are no text relocations in libaudit nor libauparse, whether --with-alpha or 
--with-armeb are used or not.  In fact the number of relocations of any kind is 
exactly the same in both cases.

Any one care to retest this on a different architecture, e.t. 32-bit x86?

FWIW, at least the attached patch was necessary to build with --with-alpha 
--with-armeb.
    Mirek
Index: lib/lookup_table.c
===================================================================
--- lib/lookup_table.c	(revision 718)
+++ lib/lookup_table.c	(working copy)
@@ -75,10 +75,10 @@
     { MACH_S390X,   AUDIT_ARCH_S390X  },
     { MACH_S390,    AUDIT_ARCH_S390   },
 #ifdef WITH_ALPHA
-    { MACH_ALPHA,   AUDIT_ARCH_ALPHA  }
+    { MACH_ALPHA,   AUDIT_ARCH_ALPHA  },
 #endif
 #ifdef WITH_ARMEB
-    { MACH_ARMEB,   AUDIT_ARCH_ARMEB  }
+    { MACH_ARMEB,   AUDIT_ARCH_ARMEB  },
 #endif
 };
 #define AUDIT_ELF_NAMES (sizeof(elftab)/sizeof(elftab[0]))
Index: lib/test/lookup_test.c
===================================================================
--- lib/test/lookup_test.c	(revision 718)
+++ lib/test/lookup_test.c	(working copy)
@@ -325,8 +325,11 @@
 	printf("Testing machinetab...\n");
 #define I2S(I) audit_machine_to_name(I)
 #define S2I(S) audit_name_to_machine(S)
-	TEST_I2S(t[i].s[0] == 'i' && t[i].s[1] >= '4' && t[i].s[1] <= '6'
-		 && strcmp(t[i].s + 2, "86") == 0);
+	TEST_I2S((t[i].s[0] == 'i' && t[i].s[1] >= '4' && t[i].s[1] <= '6'
+		  && strcmp(t[i].s + 2, "86") == 0)
+		 || strcmp(t[i].s, "armv5tejl") == 0
+		 || strcmp(t[i].s, "armv6l") == 0
+		 || strcmp(t[i].s, "armv7l") == 0);
 	TEST_S2I(-1);
 #undef I2S
 #undef S2I
--
Linux-audit mailing list
Linux-audit@redhat.com
https://www.redhat.com/mailman/listinfo/linux-audit

Reply via email to