public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Mike Frysinger" <vapier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/pax-utils:master commit in: /
Date: Sun, 22 Jan 2017 17:59:32 +0000 (UTC)	[thread overview]
Message-ID: <1479944197.66e7f671db0d1ed6af31844610e6408d111789e3.vapier@gentoo> (raw)

commit:     66e7f671db0d1ed6af31844610e6408d111789e3
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Wed Nov 23 23:36:37 2016 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Wed Nov 23 23:36:37 2016 +0000
URL:        https://gitweb.gentoo.org/proj/pax-utils.git/commit/?id=66e7f671

scanelf: unify some boiler plate logic with ELF-sized macros

Shouldn't be any functional changes here, just making life easier for
adding more macros like this.

 scanelf.c | 115 +++++++++++++++++++++++---------------------------------------
 1 file changed, 42 insertions(+), 73 deletions(-)

diff --git a/scanelf.c b/scanelf.c
index 171093a..71288fc 100644
--- a/scanelf.c
+++ b/scanelf.c
@@ -66,6 +66,19 @@ static unsigned long setpax = 0UL;
 
 static const char *objdump;
 
+/* Boiler plate wrapper for expanding ELF macros for specific ELF sizes. */
+#define _SCANELF_IF_ELF_SIZE(B, x) \
+	do { \
+		if (elf->elf_class == ELFCLASS ## B) { \
+			x(B); \
+		} \
+	} while (0)
+#define SCANELF_ELF_SIZED(x) \
+	do { \
+		_SCANELF_IF_ELF_SIZE(32, x); \
+		_SCANELF_IF_ELF_SIZE(64, x); \
+	} while (0)
+
 /* Find the path to a file by name.  Note: we do not currently handle the
  * empty path element correctly (should behave by searching $PWD). */
 static const char *which(const char *fname, const char *envvar)
@@ -149,7 +162,6 @@ static void scanelf_file_get_symtabs(elfobj *elf, void **sym, void **str)
 	 * as they are generated in sync.  Trying to mix them won't work.
 	 */
 #define GET_SYMTABS(B) \
-	if (elf->elf_class == ELFCLASS ## B) { \
 	Elf ## B ## _Shdr *esymtab = symtab; \
 	Elf ## B ## _Shdr *estrtab = strtab; \
 	Elf ## B ## _Shdr *edynsym = dynsym; \
@@ -182,10 +194,8 @@ static void scanelf_file_get_symtabs(elfobj *elf, void **sym, void **str)
 		return; \
 	} else { \
 		*sym = *str = NULL; \
-	} \
 	}
-	GET_SYMTABS(32)
-	GET_SYMTABS(64)
+	SCANELF_ELF_SIZED(GET_SYMTABS);
 
 	if (*sym && *str)
 		return;
@@ -195,10 +205,7 @@ static void scanelf_file_get_symtabs(elfobj *elf, void **sym, void **str)
 	 * reconstruct the section header info out of the dynamic
 	 * tags so we can see what symbols this guy uses at runtime.
 	 */
-	if (!elf->phdr)
-		return;
 #define GET_SYMTABS_DT(B) \
-	if (elf->elf_class == ELFCLASS ## B) { \
 	size_t i; \
 	static Elf ## B ## _Shdr sym_shdr, str_shdr; \
 	Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
@@ -300,10 +307,9 @@ static void scanelf_file_get_symtabs(elfobj *elf, void **sym, void **str)
 			ESET(str_shdr.sh_offset, offset + (vstr - vaddr)); \
 			*str = &str_shdr; \
 		} \
-	} \
 	}
-	GET_SYMTABS_DT(32)
-	GET_SYMTABS_DT(64)
+	if (elf->phdr)
+		SCANELF_ELF_SIZED(GET_SYMTABS_DT);
 	return;
 
  corrupt_hash:
@@ -320,9 +326,7 @@ static char *scanelf_file_pax(elfobj *elf, char *found_pax)
 	shown = 0;
 	memset(&ret, 0, sizeof(ret));
 
-	if (elf->phdr) {
 #define SHOW_PAX(B) \
-	if (elf->elf_class == ELFCLASS ## B) { \
 	Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
 	Elf ## B ## _Phdr *phdr = PHDR ## B (elf->phdr); \
 	for (i = 0; i < EGET(ehdr->e_phnum); i++) { \
@@ -338,11 +342,9 @@ static char *scanelf_file_pax(elfobj *elf, char *found_pax)
 		*found_pax = 1; \
 		++shown; \
 		break; \
-	} \
-	}
-	SHOW_PAX(32)
-	SHOW_PAX(64)
 	}
+	if (elf->phdr)
+		SCANELF_ELF_SIZED(SHOW_PAX);
 
 	/* Note: We do not support setting EI_PAX if not PT_PAX_FLAGS
 	 * was found.  This is known to break ELFs on glibc systems,
@@ -383,7 +385,6 @@ static char *scanelf_file_phdr(elfobj *elf, char *found_phdr, char *found_relro,
 
 #define NOTE_GNU_STACK ".note.GNU-stack"
 #define SHOW_PHDR(B) \
-	if (elf->elf_class == ELFCLASS ## B) { \
 	Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
 	Elf ## B ## _Off offset; \
 	uint32_t flags, check_flags; \
@@ -465,10 +466,8 @@ static char *scanelf_file_phdr(elfobj *elf, char *found_phdr, char *found_relro,
 			shown = 1; \
 			memcpy(ret, "!WX", 3); \
 		} \
-	} \
 	}
-	SHOW_PHDR(32)
-	SHOW_PHDR(64)
+	SCANELF_ELF_SIZED(SHOW_PHDR);
 
 	if (be_wewy_wewy_quiet || (be_quiet && !shown))
 		return NULL;
@@ -493,9 +492,7 @@ static const char *scanelf_file_textrel(elfobj *elf, char *found_textrel)
 
 	if (file_matches_list(elf->filename, qa_textrels)) return NULL;
 
-	if (elf->phdr) {
 #define SHOW_TEXTREL(B) \
-	if (elf->elf_class == ELFCLASS ## B) { \
 	Elf ## B ## _Dyn *dyn; \
 	Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
 	Elf ## B ## _Phdr *phdr = PHDR ## B (elf->phdr); \
@@ -513,10 +510,9 @@ static const char *scanelf_file_textrel(elfobj *elf, char *found_textrel)
 			} \
 			++dyn; \
 		} \
-	} }
-	SHOW_TEXTREL(32)
-	SHOW_TEXTREL(64)
 	}
+	if (elf->phdr)
+		SCANELF_ELF_SIZED(SHOW_TEXTREL);
 
 	if (be_quiet || be_wewy_wewy_quiet)
 		return NULL;
@@ -543,9 +539,7 @@ static char *scanelf_file_textrels(elfobj *elf, char *found_textrels, char *foun
 	scanelf_file_get_symtabs(elf, &symtab_void, &strtab_void);
 	text_void = elf_findsecbyname(elf, ".text");
 
-	if (symtab_void && strtab_void && text_void && elf->shdr) {
 #define SHOW_TEXTRELS(B) \
-	if (elf->elf_class == ELFCLASS ## B) { \
 	Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
 	Elf ## B ## _Shdr *shdr = SHDR ## B (elf->shdr); \
 	Elf ## B ## _Shdr *symtab = SHDR ## B (symtab_void); \
@@ -650,10 +644,9 @@ static char *scanelf_file_textrels(elfobj *elf, char *found_textrels, char *foun
 				free(sysbuf); \
 			} \
 		} \
-	} }
-	SHOW_TEXTRELS(32)
-	SHOW_TEXTRELS(64)
 	}
+	if (symtab_void && strtab_void && text_void && elf->shdr)
+		SCANELF_ELF_SIZED(SHOW_TEXTRELS);
 	if (!*found_textrels)
 		warnf("ELF %s has TEXTREL markings but doesnt appear to have any real TEXTREL's !?", elf->filename);
 
@@ -696,9 +689,7 @@ static void scanelf_file_rpath(elfobj *elf, char *found_rpath, char **ret, size_
 	strtbl_void = elf_findsecbyname(elf, ".dynstr");
 	rpath = runpath = NULL;
 
-	if (elf->phdr && strtbl_void) {
 #define SHOW_RPATH(B) \
-		if (elf->elf_class == ELFCLASS ## B) { \
 		Elf ## B ## _Dyn *dyn; \
 		Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
 		Elf ## B ## _Phdr *phdr = PHDR ## B (elf->phdr); \
@@ -806,10 +797,9 @@ static void scanelf_file_rpath(elfobj *elf, char *found_rpath, char **ret, size_
 				} \
 				++dyn; \
 			} \
-		} }
-		SHOW_RPATH(32)
-		SHOW_RPATH(64)
-	}
+		}
+	if (elf->phdr && strtbl_void)
+		SCANELF_ELF_SIZED(SHOW_RPATH);
 
 	if (be_wewy_wewy_quiet) return;
 
@@ -861,9 +851,7 @@ static const char *scanelf_file_needed_lib(elfobj *elf, char *found_needed, char
 
 	strtbl_void = elf_findsecbyname(elf, ".dynstr");
 
-	if (elf->phdr && strtbl_void) {
 #define SHOW_NEEDED(B) \
-		if (elf->elf_class == ELFCLASS ## B) { \
 		Elf ## B ## _Dyn *dyn; \
 		Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
 		Elf ## B ## _Phdr *phdr = PHDR ## B (elf->phdr); \
@@ -922,9 +910,9 @@ static const char *scanelf_file_needed_lib(elfobj *elf, char *found_needed, char
 				} \
 				++dyn; \
 			} \
-		} }
-		SHOW_NEEDED(32)
-		SHOW_NEEDED(64)
+		}
+	if (elf->phdr && strtbl_void) {
+		SCANELF_ELF_SIZED(SHOW_NEEDED);
 		if (op == 0 && !*found_needed && be_verbose)
 			warn("ELF lacks DT_NEEDED sections: %s", elf->filename);
 	}
@@ -940,7 +928,6 @@ static char *scanelf_file_interp(elfobj *elf, char *found_interp)
 	if (elf->phdr) {
 		/* Walk all the program headers to find the PT_INTERP */
 #define SHOW_PT_INTERP(B) \
-		if (elf->elf_class == ELFCLASS ## B) { \
 			size_t i; \
 			Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
 			Elf ## B ## _Phdr *phdr = PHDR ## B (elf->phdr); \
@@ -949,23 +936,17 @@ static char *scanelf_file_interp(elfobj *elf, char *found_interp)
 					offset = EGET(phdr[i].p_offset); \
 					break; \
 				} \
-			} \
-		}
-		SHOW_PT_INTERP(32)
-		SHOW_PT_INTERP(64)
+			}
+		SCANELF_ELF_SIZED(SHOW_PT_INTERP);
 	} else if (elf->shdr) {
 		/* Use the section headers to find it */
 		void *strtbl_void = elf_findsecbyname(elf, ".interp");
 
 #define SHOW_INTERP(B) \
-		if (elf->elf_class == ELFCLASS ## B) { \
 			Elf ## B ## _Shdr *strtbl = SHDR ## B (strtbl_void); \
-			offset = EGET(strtbl->sh_offset); \
-		}
-		if (strtbl_void) {
-			SHOW_INTERP(32)
-			SHOW_INTERP(64)
-		}
+			offset = EGET(strtbl->sh_offset);
+		if (strtbl_void)
+			SCANELF_ELF_SIZED(SHOW_INTERP);
 	}
 
 	/* Validate the pointer even if we don't use it in output */
@@ -992,7 +973,6 @@ static const char *scanelf_file_bind(elfobj *elf, char *found_bind)
 	if (!elf->phdr) return NULL;
 
 #define SHOW_BIND(B) \
-	if (elf->elf_class == ELFCLASS ## B) { \
 		Elf ## B ## _Dyn *dyn; \
 		Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
 		Elf ## B ## _Phdr *phdr = PHDR ## B (elf->phdr); \
@@ -1013,10 +993,8 @@ static const char *scanelf_file_bind(elfobj *elf, char *found_bind)
 				} \
 				++dyn; \
 			} \
-		} \
-	}
-	SHOW_BIND(32)
-	SHOW_BIND(64)
+		}
+	SCANELF_ELF_SIZED(SHOW_BIND);
 
 	if (be_wewy_wewy_quiet) return NULL;
 
@@ -1038,9 +1016,7 @@ static char *scanelf_file_soname(elfobj *elf, char *found_soname)
 
 	strtbl_void = elf_findsecbyname(elf, ".dynstr");
 
-	if (elf->phdr && strtbl_void) {
 #define SHOW_SONAME(B) \
-		if (elf->elf_class == ELFCLASS ## B) { \
 		Elf ## B ## _Dyn *dyn; \
 		Elf ## B ## _Ehdr *ehdr = EHDR ## B (elf->ehdr); \
 		Elf ## B ## _Phdr *phdr = PHDR ## B (elf->phdr); \
@@ -1067,10 +1043,9 @@ static char *scanelf_file_soname(elfobj *elf, char *found_soname)
 				} \
 				++dyn; \
 			} \
-		} }
-		SHOW_SONAME(32)
-		SHOW_SONAME(64)
-	}
+		}
+	if (elf->phdr && strtbl_void)
+		SCANELF_ELF_SIZED(SHOW_SONAME);
 
 	return NULL;
 }
@@ -1253,7 +1228,6 @@ static char *scanelf_file_sym(elfobj *elf, char *found_sym)
 
 	if (symtab_void && strtab_void) {
 #define FIND_SYM(B) \
-		if (elf->elf_class == ELFCLASS ## B) { \
 		Elf ## B ## _Shdr *symtab = SHDR ## B (symtab_void); \
 		Elf ## B ## _Shdr *strtab = SHDR ## B (strtab_void); \
 		Elf ## B ## _Sym *sym = SYM ## B (elf->vdata + EGET(symtab->sh_offset)); \
@@ -1282,10 +1256,8 @@ static char *scanelf_file_sym(elfobj *elf, char *found_sym)
 				                      EGET(sym->st_size)); \
 			} \
 			++sym; \
-		} \
 		}
-		FIND_SYM(32)
-		FIND_SYM(64)
+		SCANELF_ELF_SIZED(FIND_SYM);
 	}
 
 	if (be_wewy_wewy_quiet) {
@@ -1314,7 +1286,6 @@ static const char *scanelf_file_sections(elfobj *elf, char *found_section)
 		 return NULL;
 
 #define FIND_SECTION(B) \
-	if (elf->elf_class == ELFCLASS ## B) { \
 		size_t matched, n; \
 		int invert; \
 		const char *section_name; \
@@ -1329,10 +1300,8 @@ static const char *scanelf_file_sections(elfobj *elf, char *found_section)
 		} \
 		\
 		if (matched == array_cnt(find_section_arr)) \
-			*found_section = 1; \
-	}
-	FIND_SECTION(32)
-	FIND_SECTION(64)
+			*found_section = 1;
+	SCANELF_ELF_SIZED(FIND_SECTION);
 
 	if (be_wewy_wewy_quiet)
 		return NULL;


             reply	other threads:[~2017-01-22 17:59 UTC|newest]

Thread overview: 253+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-22 17:59 Mike Frysinger [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-09-22  4:33 [gentoo-commits] proj/pax-utils:master commit in: / Sam James
2024-09-22  4:30 Sam James
2024-08-09 10:06 Sam James
2024-08-09 10:06 Sam James
2024-08-09 10:06 Sam James
2024-08-09 10:06 Sam James
2024-08-09 10:06 Sam James
2024-08-09 10:06 Sam James
2024-08-09 10:02 Sam James
2024-07-22 21:07 Mike Gilbert
2024-07-22 20:08 Mike Gilbert
2024-01-25  6:52 Mike Frysinger
2024-01-25  5:57 Mike Frysinger
2024-01-25  5:57 Mike Frysinger
2024-01-25  5:36 Mike Frysinger
2024-01-25  5:21 Mike Frysinger
2024-01-25  5:06 Mike Frysinger
2024-01-25  5:06 Mike Frysinger
2024-01-25  4:44 Mike Frysinger
2024-01-25  2:53 Mike Frysinger
2024-01-25  2:53 Mike Frysinger
2024-01-25  2:53 Mike Frysinger
2024-01-25  2:14 Mike Frysinger
2024-01-24 22:53 Mike Frysinger
2024-01-24 22:15 Mike Frysinger
2024-01-24 15:44 Mike Frysinger
2024-01-16  5:13 Mike Frysinger
2024-01-16  5:13 Mike Frysinger
2024-01-10  8:05 Mike Frysinger
2024-01-10  8:02 Mike Frysinger
2024-01-10  8:02 Mike Frysinger
2024-01-10  7:58 Mike Frysinger
2024-01-02 18:03 Mike Frysinger
2024-01-02 18:03 Mike Frysinger
2024-01-02 18:03 Mike Frysinger
2024-01-02 18:03 Mike Frysinger
2024-01-02 16:28 Mike Frysinger
2024-01-01 15:43 Mike Frysinger
2024-01-01 15:43 Mike Frysinger
2023-12-22  5:31 Mike Frysinger
2023-12-22  5:31 Mike Frysinger
2023-12-22  5:31 Mike Frysinger
2023-12-22  2:31 Mike Frysinger
2023-12-22  2:31 Mike Frysinger
2023-12-22  2:31 Mike Frysinger
2023-12-14 21:28 Mike Frysinger
2023-12-14 21:28 Mike Frysinger
2023-12-14 19:57 Mike Frysinger
2023-11-23 13:31 Sam James
2023-02-13  5:26 Sam James
2023-02-13  5:26 Sam James
2023-01-29  5:56 Sam James
2023-01-29  5:56 Sam James
2023-01-29  5:56 Sam James
2023-01-29  3:41 Sam James
2023-01-29  3:36 Sam James
2023-01-29  3:36 Sam James
2023-01-26 21:46 Sam James
2023-01-06  7:15 Sam James
2022-09-28  7:42 Mike Frysinger
2022-09-28  7:42 Mike Frysinger
2022-09-28  7:42 Mike Frysinger
2022-09-28  7:42 Mike Frysinger
2022-09-28  7:42 Mike Frysinger
2022-09-28  7:42 Mike Frysinger
2022-09-28  7:42 Mike Frysinger
2022-09-21  8:28 Mike Frysinger
2022-09-21  8:26 Mike Frysinger
2022-09-21  8:20 Mike Frysinger
2022-07-31  4:56 Sam James
2022-07-12  6:33 Sam James
2022-07-12  6:33 Sam James
2022-04-25  1:20 WANG Xuerui
2022-03-24 15:42 Sam James
2022-03-09  8:01 Mike Frysinger
2022-02-07  7:18 Fabian Groffen
2022-01-23  2:47 Mike Frysinger
2021-12-24  1:45 Sam James
2021-12-17  5:19 Mike Frysinger
2021-10-17  5:15 Mike Frysinger
2021-10-05  1:05 Mike Frysinger
2021-10-04 22:05 Mike Frysinger
2021-09-20  4:51 Sam James
2021-07-22 21:31 Sergei Trofimovich
2021-07-22 21:16 Sergei Trofimovich
2021-07-02 22:04 Sergei Trofimovich
2021-06-10  7:07 Sergei Trofimovich
2021-06-10  7:02 Sergei Trofimovich
2021-04-19  4:58 Mike Frysinger
2021-04-18 18:29 Mike Frysinger
2021-04-17  5:39 Mike Frysinger
2021-04-17  5:39 Mike Frysinger
2021-04-17  0:38 Mike Frysinger
2021-04-16 19:26 Mike Frysinger
2021-04-16 19:26 Mike Frysinger
2021-04-16 19:26 Mike Frysinger
2021-04-16 19:03 Mike Frysinger
2021-04-16 19:03 Mike Frysinger
2021-04-16 15:08 Mike Frysinger
2021-04-16 15:08 Mike Frysinger
2021-04-16 15:08 Mike Frysinger
2021-04-16  3:41 Mike Frysinger
2021-04-16  3:39 Mike Frysinger
2021-04-16  3:39 Mike Frysinger
2021-04-16  1:56 Mike Frysinger
2021-04-16  1:56 Mike Frysinger
2021-04-16  0:48 Mike Frysinger
2021-04-16  0:48 Mike Frysinger
2021-02-26 11:51 Sergei Trofimovich
2021-02-04 18:51 Sergei Trofimovich
2021-02-03 20:41 Sergei Trofimovich
2021-02-03 20:17 Sergei Trofimovich
2021-02-03 19:46 Sergei Trofimovich
2021-01-01 14:08 Fabian Groffen
2021-01-01 14:08 Fabian Groffen
2020-12-20 19:53 Sergei Trofimovich
2020-10-05 17:46 Sergei Trofimovich
2020-08-14 22:17 Sergei Trofimovich
2020-04-13 10:41 Sergei Trofimovich
2020-04-06 18:00 Sergei Trofimovich
2020-03-26 19:27 Mike Frysinger
2020-03-26 17:09 Mike Frysinger
2020-03-26 17:09 Mike Frysinger
2020-03-19  0:00 Sergei Trofimovich
2020-03-18 23:39 Sergei Trofimovich
2020-02-16 10:57 Sergei Trofimovich
2020-02-16 10:50 Sergei Trofimovich
2020-02-16 10:48 Sergei Trofimovich
2020-02-16 10:17 Sergei Trofimovich
2019-01-14 22:53 Sergei Trofimovich
2018-11-19 22:20 Sergei Trofimovich
2018-06-07 14:09 Mike Frysinger
2018-06-07 14:09 Mike Frysinger
2018-06-07 14:09 Mike Frysinger
2018-06-07 14:09 Mike Frysinger
2018-06-07 14:09 Mike Frysinger
2018-06-07 14:09 Mike Frysinger
2018-06-07 14:09 Mike Frysinger
2018-06-07 14:09 Mike Frysinger
2018-06-07 14:09 Mike Frysinger
2018-06-07  4:44 Mike Frysinger
2018-06-07  4:44 Mike Frysinger
2018-06-07  4:44 Mike Frysinger
2018-02-24 10:16 Sergei Trofimovich
2017-09-18  9:27 Fabian Groffen
2017-09-18  9:27 Fabian Groffen
2017-09-18  7:06 Fabian Groffen
2017-03-14  7:19 Mike Frysinger
2017-02-16 21:24 Mike Frysinger
2017-02-16 21:24 Mike Frysinger
2017-02-16 21:24 Mike Frysinger
2017-02-11  7:06 Mike Frysinger
2017-02-01 23:08 Mike Frysinger
2017-02-01 23:08 Mike Frysinger
2017-02-01 23:08 Mike Frysinger
2017-01-24 20:39 Mike Frysinger
2017-01-24 20:39 Mike Frysinger
2017-01-24  6:50 Mike Frysinger
2017-01-24  6:50 Mike Frysinger
2017-01-24  6:50 Mike Frysinger
2017-01-24  6:50 Mike Frysinger
2017-01-22 17:59 Mike Frysinger
2017-01-22 17:59 Mike Frysinger
2017-01-22 17:59 Mike Frysinger
2017-01-22 17:59 Mike Frysinger
2017-01-22 17:59 Mike Frysinger
2017-01-22 17:59 Mike Frysinger
2017-01-22 17:59 Mike Frysinger
2017-01-22 17:59 Mike Frysinger
2016-11-27  3:43 Mike Frysinger
2016-11-15  4:02 Mike Frysinger
2016-11-15  4:02 Mike Frysinger
2016-11-14 14:57 Mike Frysinger
2016-11-12  7:15 Mike Frysinger
2016-11-12  7:15 Mike Frysinger
2016-11-12  7:15 Mike Frysinger
2016-11-12  7:15 Mike Frysinger
2016-11-12  7:15 Mike Frysinger
2016-11-12  7:15 Mike Frysinger
2016-11-08 20:47 Mike Gilbert
2016-06-20 17:46 Mike Frysinger
2016-06-20  4:03 Mike Frysinger
2016-06-20  4:03 Mike Frysinger
2016-06-20  3:22 Mike Frysinger
2016-06-20  3:22 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-06-20  3:08 Mike Frysinger
2016-05-31 22:27 Mike Frysinger
2016-03-03 21:15 Mike Frysinger
2016-02-10 19:41 Mike Frysinger
2016-02-10 18:54 Mike Frysinger
2016-01-28 22:42 Mike Frysinger
2016-01-03 22:23 Mike Frysinger
2016-01-03 22:23 Mike Frysinger
2016-01-03 22:01 Mike Frysinger
2016-01-02 15:26 Mike Frysinger
2016-01-02  3:52 Mike Frysinger
2015-12-19 19:41 Mike Frysinger
2015-12-17  3:24 Mike Frysinger
2015-12-17  3:24 Mike Frysinger
2015-12-17  3:24 Mike Frysinger
2015-12-17  3:24 Mike Frysinger
2015-12-12 22:45 Mike Frysinger
2015-12-12 22:45 Mike Frysinger
2015-12-12 22:45 Mike Frysinger
2015-12-12 22:45 Mike Frysinger
2015-12-12 22:45 Mike Frysinger
2015-12-12 22:45 Mike Frysinger
2015-11-26  8:43 Mike Frysinger
2015-10-26  4:35 Mike Frysinger
2015-10-08 20:31 Mike Frysinger
2015-09-19  6:27 Mike Frysinger
2015-09-19  6:27 Mike Frysinger
2015-09-12  4:17 Mike Frysinger
2015-08-28  0:33 Mike Frysinger
2015-08-26  6:29 Mike Frysinger
2015-08-24 21:22 Mike Frysinger
2015-08-24 21:22 Mike Frysinger
2015-08-24 21:22 Mike Frysinger
2015-08-20 14:39 Mike Frysinger
2015-08-20 14:39 Mike Frysinger
2015-08-20 14:39 Mike Frysinger
2015-08-20 14:33 Mike Frysinger
2015-08-20 14:33 Mike Frysinger
2015-08-20 13:32 Mike Frysinger
2015-08-18 15:56 Mike Frysinger
2015-08-18 15:35 Mike Frysinger
2015-08-18 15:35 Mike Frysinger
2015-08-18 14:39 Mike Frysinger
2015-08-18 14:38 Mike Frysinger
2015-07-13  9:14 Mike Frysinger
2015-07-13  9:14 Mike Frysinger
2015-07-13  9:14 Mike Frysinger
2015-05-24  3:22 Mike Frysinger
2015-03-29 20:07 Mike Frysinger
2015-03-29 20:07 Mike Frysinger
2015-03-29 20:07 Mike Frysinger
2015-03-10  5:31 Mike Frysinger
2015-03-10  5:31 Mike Frysinger
2015-03-10  4:19 Mike Frysinger
2015-03-10  3:36 Mike Frysinger
2015-03-06 11:52 Mike Frysinger
2015-03-04 22:35 Mike Frysinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1479944197.66e7f671db0d1ed6af31844610e6408d111789e3.vapier@gentoo \
    --to=vapier@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox