<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/elfutils.git, branch nsanci/pr28284</title>
<subtitle>sourceware.org: git/elfutils.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/'/>
<entry>
<title>28284 first</title>
<updated>2021-09-22T14:47:40+00:00</updated>
<author>
<name>Noah Sanci</name>
<email>nsanci@redhat.com</email>
</author>
<published>2021-09-16T13:49:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=68e3b479949b4b9e44d46eb1877fa237aa3a0ca3'/>
<id>68e3b479949b4b9e44d46eb1877fa237aa3a0ca3</id>
<content type='text'>
Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>debuginfod: Remove checking for unsafe headers</title>
<updated>2021-09-17T17:36:36+00:00</updated>
<author>
<name>Noah Sanci</name>
<email>nsanci@redhat.com</email>
</author>
<published>2021-09-17T14:45:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=28db5f16c44fa7bbd24b221b65aa4d133753355c'/>
<id>28db5f16c44fa7bbd24b221b65aa4d133753355c</id>
<content type='text'>
Some http response header checks were removed such as checking for
Connection and Cache-Control. These headers are not guarenteed to be
received and depend on proxy and libmicrohttpd versions. Checking for
the existance of Content-Length and DEBUGINFOD-* headers is sufficient
since Content-Length is added upon creation of an MHD_Response object
and DEBUGINFOD-* are added manually.
(source on Content-Length being added:
https://www.gnu.org/software/libmicrohttpd/manual/libmicrohttpd.html#
    microhttpd_002dresponse-headers )

Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some http response header checks were removed such as checking for
Connection and Cache-Control. These headers are not guarenteed to be
received and depend on proxy and libmicrohttpd versions. Checking for
the existance of Content-Length and DEBUGINFOD-* headers is sufficient
since Content-Length is added upon creation of an MHD_Response object
and DEBUGINFOD-* are added manually.
(source on Content-Length being added:
https://www.gnu.org/software/libmicrohttpd/manual/libmicrohttpd.html#
    microhttpd_002dresponse-headers )

Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>debuginfod: Query debuginfod servers before printing response</title>
<updated>2021-09-17T14:52:43+00:00</updated>
<author>
<name>Noah Sanci</name>
<email>nsanci@redhat.com</email>
</author>
<published>2021-09-17T14:45:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=8626a4786c1e79e1b4891ea31966bc124e029378'/>
<id>8626a4786c1e79e1b4891ea31966bc124e029378</id>
<content type='text'>
While checking PR27277 on some buildbots, greping would fail in
run-debuginfod-response-headers.sh. This was because querying the
debuginfod server occurs after checking if the responseh headers had
arrived, leaving the possibility to leave the querying loop before
outputting the headers which caused the grep failure. Querying now
occurs before checking if response headers have arrived, so that they
will certainly be printed and grep will find them.

Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While checking PR27277 on some buildbots, greping would fail in
run-debuginfod-response-headers.sh. This was because querying the
debuginfod server occurs after checking if the responseh headers had
arrived, leaving the possibility to leave the querying loop before
outputting the headers which caused the grep failure. Querying now
occurs before checking if response headers have arrived, so that they
will certainly be printed and grep will find them.

Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>debuginfod: PR27277 - Describe retrieved files when verbose</title>
<updated>2021-09-16T14:21:15+00:00</updated>
<author>
<name>Noah Sanci</name>
<email>nsanci@redhat.com</email>
</author>
<published>2021-08-10T15:21:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=ff5056c7d78b925fbd49997dc88183f6c859ac7f'/>
<id>ff5056c7d78b925fbd49997dc88183f6c859ac7f</id>
<content type='text'>
Allow users, with enough verbosity, to print the HTTP response headers
upon retrieving a file. These files may include several custome http
response headers such as X-DEBUGINFOD-FILE, X-DEBUGINFOD-SIZE, and
X-DEBUGINFOD-ARCHIVE. These headers are added from the daemon, in
debuginfod.cxx.

E.g output:

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 4095072
Cache-Control: public
Last-Modified: Thu, 09 Sep 2021 19:06:40 GMT
X-FILE: debuginfod
X-FILE-SIZE: 4095072
Content-Type: application/octet-stream
Date: Fri, 10 Sep 2021 16:38:06 GMT

https://sourceware.org/bugzilla/show_bug.cgi?id=27277

Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow users, with enough verbosity, to print the HTTP response headers
upon retrieving a file. These files may include several custome http
response headers such as X-DEBUGINFOD-FILE, X-DEBUGINFOD-SIZE, and
X-DEBUGINFOD-ARCHIVE. These headers are added from the daemon, in
debuginfod.cxx.

E.g output:

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 4095072
Cache-Control: public
Last-Modified: Thu, 09 Sep 2021 19:06:40 GMT
X-FILE: debuginfod
X-FILE-SIZE: 4095072
Content-Type: application/octet-stream
Date: Fri, 10 Sep 2021 16:38:06 GMT

https://sourceware.org/bugzilla/show_bug.cgi?id=27277

Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>debuginfod: PR28034 - No longer escape '/', and loop efficiency</title>
<updated>2021-09-16T13:40:07+00:00</updated>
<author>
<name>Noah Sanci</name>
<email>nsanci@redhat.com</email>
</author>
<published>2021-09-09T17:10:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=00f0fa77c995684060aa8ea6fe7276ed9b593d11'/>
<id>00f0fa77c995684060aa8ea6fe7276ed9b593d11</id>
<content type='text'>
Previously, urls containing '/', so most urls, would escape '/' to %2F,
which is undesirable for use in other libraries which may escape
differently. This patch escapes the '/' and replaces all of them
ensuring there are no %2Fs sent.
Some inefficiencies within the code were fixed, such as changing constant
operations of a while loop within a for loop to a while loop outside of
a for loop. Also strlen is no longer used within the loop, simplifying
the interior operations to mere arithmetic.

https://sourceware.org/bugzilla/show_bug.cgi?id=28034

Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, urls containing '/', so most urls, would escape '/' to %2F,
which is undesirable for use in other libraries which may escape
differently. This patch escapes the '/' and replaces all of them
ensuring there are no %2Fs sent.
Some inefficiencies within the code were fixed, such as changing constant
operations of a while loop within a for loop to a while loop outside of
a for loop. Also strlen is no longer used within the loop, simplifying
the interior operations to mere arithmetic.

https://sourceware.org/bugzilla/show_bug.cgi?id=28034

Signed-off-by: Noah Sanci &lt;nsanci@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PR28339: debuginfod: fix groom/scan race condition on just-emptied queue</title>
<updated>2021-09-14T15:27:41+00:00</updated>
<author>
<name>Frank Ch. Eigler</name>
<email>fche@redhat.com</email>
</author>
<published>2021-09-14T12:15:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=2ff803956d6aaefeed3bc3f186da6fe666c7b1b6'/>
<id>2ff803956d6aaefeed3bc3f186da6fe666c7b1b6</id>
<content type='text'>
debuginfod's scan and groom operations (thread_main_scanner,
thread_main_fts_source_paths) are intended to be mutually exclusive,
as a substitute for more complicated sql transaction batching.  (This
is because scanning / grooming involves inserting or deleting data
from multiple related tables.)

The workq class that governs this in debuginfod.cxx has a problem: if
the workq just becomes empty, its sole entry pulled by a scanner
thread in response to a wait_front(), an 'idler' groomer thread is
ALSO permitted to run, because there is no indication as to when the
scanner thread operation finishes, only when it starts.

Extending the workq with a counter ("fronters") to track any active
scanning activity (even if the workq is empty) lets us block idlers
groomers a little longer.

Signed-off-by: Frank Ch. Eigler &lt;fche@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
debuginfod's scan and groom operations (thread_main_scanner,
thread_main_fts_source_paths) are intended to be mutually exclusive,
as a substitute for more complicated sql transaction batching.  (This
is because scanning / grooming involves inserting or deleting data
from multiple related tables.)

The workq class that governs this in debuginfod.cxx has a problem: if
the workq just becomes empty, its sole entry pulled by a scanner
thread in response to a wait_front(), an 'idler' groomer thread is
ALSO permitted to run, because there is no indication as to when the
scanner thread operation finishes, only when it starts.

Extending the workq with a counter ("fronters") to track any active
scanning activity (even if the workq is empty) lets us block idlers
groomers a little longer.

Signed-off-by: Frank Ch. Eigler &lt;fche@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>debuginfod: Add endl after "fdcache emergency flush for filling tmpdir" log</title>
<updated>2021-09-12T22:37:19+00:00</updated>
<author>
<name>Mark Wielaard</name>
<email>mark@klomp.org</email>
</author>
<published>2021-09-12T22:35:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=761d37a1e072e7a6c829fdff8cebcf4c308d0e02'/>
<id>761d37a1e072e7a6c829fdff8cebcf4c308d0e02</id>
<content type='text'>
Without the endl the next log message will not start on its own line.

Signed-off-by: Mark Wielaard &lt;mark@klomp.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Without the endl the next log message will not start on its own line.

Signed-off-by: Mark Wielaard &lt;mark@klomp.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lib: Make error.c more like error(3)</title>
<updated>2021-09-12T20:43:17+00:00</updated>
<author>
<name>Colin Cross</name>
<email>ccross@google.com</email>
</author>
<published>2021-09-10T18:07:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=7582a0d3e09ee154961bbba9285a224e5d09f407'/>
<id>7582a0d3e09ee154961bbba9285a224e5d09f407</id>
<content type='text'>
Fix some issues with the error reimplementation to make it match
the specification for error(3).

Flush stdout before printing to stderr.  Also flush stderr afterwards,
which is not specified in the man page for error(3), but is what
bionic does.

error(3) prints strerror(errnum) if and only if errnum is nonzero,
but verr prints strerror(errno) unconditionaly.  When errnum is nonzero
copy it to errno and use verr, and when it is not set use verrx that
doesn't print errno.

error(3) only exits if status is nonzero, but verr exits uncondtionally.
Use vwarn/vwarnx when status is zero, which don't exit.

Signed-off-by: Colin Cross &lt;ccross@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix some issues with the error reimplementation to make it match
the specification for error(3).

Flush stdout before printing to stderr.  Also flush stderr afterwards,
which is not specified in the man page for error(3), but is what
bionic does.

error(3) prints strerror(errnum) if and only if errnum is nonzero,
but verr prints strerror(errno) unconditionaly.  When errnum is nonzero
copy it to errno and use verr, and when it is not set use verrx that
doesn't print errno.

error(3) only exits if status is nonzero, but verr exits uncondtionally.
Use vwarn/vwarnx when status is zero, which don't exit.

Signed-off-by: Colin Cross &lt;ccross@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libdw: set address size, offset size and version on fake CUs</title>
<updated>2021-09-12T19:37:31+00:00</updated>
<author>
<name>Mark Wielaard</name>
<email>mark@klomp.org</email>
</author>
<published>2021-08-26T17:05:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=52b0d9caf5575a62322c9fbe920b69444dd09162'/>
<id>52b0d9caf5575a62322c9fbe920b69444dd09162</id>
<content type='text'>
There are three "fake CUs" that are associated with .debug_loc,
.debug_loclist and .debug_addr.  These fake CUs are used for "fake
attributes" to provide values that are stored in these sections
instead of in the .debug_info section. These fake CUs didn't have the
address size, offset size and DWARF version set. This meant that
values that depended on those properties might not be interpreted
correctly. One example was the value associated with a DW_OP_addrx
(which comes from the .debug_addr section).

Add a testcase using varlocs to test that addresses can correctly be
retrieved for gcc/clang, DWARF4/5 and 32/64 bits objects.

https://sourceware.org/bugzilla/show_bug.cgi?id=28220

Signed-off-by: Mark Wielaard &lt;mark@klomp.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are three "fake CUs" that are associated with .debug_loc,
.debug_loclist and .debug_addr.  These fake CUs are used for "fake
attributes" to provide values that are stored in these sections
instead of in the .debug_info section. These fake CUs didn't have the
address size, offset size and DWARF version set. This meant that
values that depended on those properties might not be interpreted
correctly. One example was the value associated with a DW_OP_addrx
(which comes from the .debug_addr section).

Add a testcase using varlocs to test that addresses can correctly be
retrieved for gcc/clang, DWARF4/5 and 32/64 bits objects.

https://sourceware.org/bugzilla/show_bug.cgi?id=28220

Signed-off-by: Mark Wielaard &lt;mark@klomp.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: Don't fail run-debuginfod-fd-prefetch-caches.sh if grep -c fails</title>
<updated>2021-09-09T20:53:05+00:00</updated>
<author>
<name>Mark Wielaard</name>
<email>mark@klomp.org</email>
</author>
<published>2021-09-09T19:51:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/elfutils.git/commit/?id=bbf0dc0162e82770f296b2ecda77a2b5bd6f7405'/>
<id>bbf0dc0162e82770f296b2ecda77a2b5bd6f7405</id>
<content type='text'>
The set -o errtrace made run-debuginfod-fd-prefetch-caches.sh
fail. On some systems. Add set -o functrace to make it fail consistently.

The failure is because the grep -c for in the log file fails (it
returns zero). Fix this by using || true. But this is only a
workaround. It makes the test pass, but only because all values are
always zero. The test doesn't currently test anything.

Also make sure that err and cleanup are only executed once.

Signed-off-by: Mark Wielaard &lt;mark@klomp.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The set -o errtrace made run-debuginfod-fd-prefetch-caches.sh
fail. On some systems. Add set -o functrace to make it fail consistently.

The failure is because the grep -c for in the log file fails (it
returns zero). Fix this by using || true. But this is only a
workaround. It makes the test pass, but only because all values are
always zero. The test doesn't currently test anything.

Also make sure that err and cleanup are only executed once.

Signed-off-by: Mark Wielaard &lt;mark@klomp.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
