-#elif __GNUC__
-static uintptr_t
-get_max_stack(void)
-{
- static const char file_name[] = "/proc/self/maps";
- char line[1024];
- int line_number;
- FILE *f;
-
- f = fopen(file_name, "r");
- if (f == NULL) {
- VLOG_WARN("opening %s failed: %s", file_name, strerror(errno));
- return -1;
- }
-
- for (line_number = 1; fgets(line, sizeof line, f); line_number++) {
- if (strstr(line, "[stack]")) {
- uintptr_t end;
- if (sscanf(line, "%*x-%"SCNxPTR, &end) != 1) {
- VLOG_WARN("%s:%d: parse error", file_name, line_number);
- continue;
- }
- fclose(f);
- return end;
- }
- }
- fclose(f);
-
- VLOG_WARN("%s: no stack found", file_name);
- return -1;
-}