mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-03-03 07:29:23 +00:00
Choose better deterministic timestamp for zip
This commit is contained in:
parent
b45d50b690
commit
bf62140377
7 changed files with 32 additions and 30 deletions
Binary file not shown.
Binary file not shown.
2
third_party/python/Python/ceval.c
vendored
2
third_party/python/Python/ceval.c
vendored
|
@ -824,7 +824,7 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
|
|||
|
||||
#if __GNUC__ + 0 >= 9
|
||||
#define HOT_LABEL __attribute__((__hot__))
|
||||
#define COLD_LABEL __attribute__((__hot__))
|
||||
#define COLD_LABEL __attribute__((__cold__))
|
||||
#else
|
||||
#define HOT_LABEL
|
||||
#define COLD_LABEL
|
||||
|
|
50
third_party/python/Python/cosmomodule.c
vendored
50
third_party/python/Python/cosmomodule.c
vendored
|
@ -205,50 +205,44 @@ static bool ftrace_installed = 0;
|
|||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
} TracerObject;
|
||||
} FtracerObject;
|
||||
|
||||
static int TracerObject_init(PyObject* self, PyObject *args, PyObject *kwargs)
|
||||
static int FtracerObject_init(PyObject* self, PyObject *args, PyObject *kwargs)
|
||||
{
|
||||
if (!ftrace_installed) {
|
||||
ftrace_install();
|
||||
ftrace_installed = 1;
|
||||
ftrace_enabled = 0;
|
||||
}
|
||||
ftrace_install();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject* TracerObject_enter(PyObject *self, PyObject *Py_UNUSED(ignored))
|
||||
static PyObject* FtracerObject_enter(PyObject *self, PyObject *Py_UNUSED(ignored))
|
||||
{
|
||||
ftrace_enabled = 1;
|
||||
++g_ftrace;
|
||||
return self;
|
||||
}
|
||||
|
||||
static PyObject* TracerObject_exit(PyObject *self, PyObject *args)
|
||||
static PyObject* FtracerObject_exit(PyObject *self, PyObject *args)
|
||||
{
|
||||
ftrace_enabled = 0;
|
||||
--g_ftrace;
|
||||
return self;
|
||||
}
|
||||
|
||||
static PyMethodDef TracerObject_methods[] = {
|
||||
{"__enter__", (PyCFunction) TracerObject_enter, METH_NOARGS,
|
||||
"enable ftrace to start logging"
|
||||
},
|
||||
{"__exit__", (PyCFunction) TracerObject_exit, METH_VARARGS,
|
||||
"disable ftrace to stop logging"
|
||||
},
|
||||
static PyMethodDef FtracerObject_methods[] = {
|
||||
{"__enter__", (PyCFunction) FtracerObject_enter, METH_NOARGS,
|
||||
"enables c function call logging"},
|
||||
{"__exit__", (PyCFunction) FtracerObject_exit, METH_VARARGS,
|
||||
"disables c function call logging"},
|
||||
{0}
|
||||
};
|
||||
|
||||
static PyTypeObject TracerType = {
|
||||
static PyTypeObject FtracerType = {
|
||||
PyVarObject_HEAD_INIT(NULL, 0)
|
||||
.tp_name = "cosmo.Tracer",
|
||||
.tp_name = "cosmo.Ftracer",
|
||||
.tp_doc = "wrapping ftrace with a context manager",
|
||||
.tp_basicsize = sizeof(TracerObject),
|
||||
.tp_basicsize = sizeof(FtracerObject),
|
||||
.tp_itemsize = 0,
|
||||
.tp_flags = Py_TPFLAGS_DEFAULT,
|
||||
.tp_new = PyType_GenericNew,
|
||||
.tp_init = (initproc) TracerObject_init,
|
||||
.tp_methods = TracerObject_methods,
|
||||
.tp_init = (initproc) FtracerObject_init,
|
||||
.tp_methods = FtracerObject_methods,
|
||||
};
|
||||
|
||||
PyDoc_STRVAR(ftrace_doc,
|
||||
|
@ -265,14 +259,12 @@ to work, the concomitant .com.dbg binary needs to be present.");
|
|||
static PyObject *
|
||||
cosmo_ftrace(PyObject *self, PyObject *noargs)
|
||||
{
|
||||
PyObject *tracer = PyType_GenericNew(&TracerType, NULL, NULL);
|
||||
PyObject *tracer = PyType_GenericNew(&FtracerType, NULL, NULL);
|
||||
if (tracer == NULL) Py_RETURN_NONE;
|
||||
TracerObject_init(tracer, NULL, NULL);
|
||||
FtracerObject_init(tracer, NULL, NULL);
|
||||
return tracer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static PyMethodDef cosmo_methods[] = {
|
||||
{"exit1", cosmo_exit1, METH_NOARGS, exit1_doc},
|
||||
{"rdtsc", cosmo_rdtsc, METH_NOARGS, rdtsc_doc},
|
||||
|
@ -321,14 +313,14 @@ PyMODINIT_FUNC
|
|||
PyInit_cosmo(void)
|
||||
{
|
||||
PyObject *m;
|
||||
if (PyType_Ready(&TracerType) < 0) return 0;
|
||||
if (PyType_Ready(&FtracerType) < 0) return 0;
|
||||
if (!(m = PyModule_Create(&cosmomodule))) return 0;
|
||||
PyModule_AddStringConstant(m, "MODE", MODE);
|
||||
PyModule_AddIntConstant(m, "IMAGE_BASE_VIRTUAL", IMAGE_BASE_VIRTUAL);
|
||||
PyModule_AddStringConstant(m, "kernel", GetKernelName());
|
||||
PyModule_AddIntConstant(m, "kStartTsc", kStartTsc);
|
||||
|
||||
Py_INCREF(&TracerType);
|
||||
Py_INCREF(&FtracerType);
|
||||
// PyModule_AddObject(m, "Tracer", (PyObject *) &TracerType);
|
||||
return !PyErr_Occurred() ? m : 0;
|
||||
}
|
||||
|
|
4
third_party/python/pyobj.c
vendored
4
third_party/python/pyobj.c
vendored
|
@ -31,7 +31,9 @@
|
|||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/stdio/append.internal.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/sysv/consts/clock.h"
|
||||
#include "libc/sysv/consts/o.h"
|
||||
#include "libc/time/time.h"
|
||||
#include "libc/x/x.h"
|
||||
#include "third_party/getopt/getopt.h"
|
||||
#include "third_party/python/Include/abstract.h"
|
||||
|
@ -711,6 +713,8 @@ int
|
|||
main(int argc, char *argv[])
|
||||
{
|
||||
int ec;
|
||||
timestamp.tv_sec = 1647414000; /* determinism */
|
||||
/* clock_gettime(CLOCK_REALTIME, ×tamp); */
|
||||
GetOpts(argc, argv);
|
||||
Py_NoUserSiteDirectory++;
|
||||
Py_NoSiteFlag++;
|
||||
|
|
|
@ -145,6 +145,8 @@ void elfwriter_zip(struct ElfWriter *elf, const char *symbol, const char *name,
|
|||
size_t lfilehdrsize, uncompsize, compsize, commentsize;
|
||||
uint16_t method, gflags, mtime, mdate, iattrs, dosmode;
|
||||
|
||||
CHECK_NE(0, mtim.tv_sec);
|
||||
|
||||
gflags = 0;
|
||||
iattrs = 0;
|
||||
compsize = size;
|
||||
|
|
|
@ -26,11 +26,13 @@
|
|||
#include "libc/runtime/gc.internal.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/sysv/consts/clock.h"
|
||||
#include "libc/sysv/consts/ex.h"
|
||||
#include "libc/sysv/consts/exit.h"
|
||||
#include "libc/sysv/consts/map.h"
|
||||
#include "libc/sysv/consts/o.h"
|
||||
#include "libc/sysv/consts/prot.h"
|
||||
#include "libc/time/time.h"
|
||||
#include "libc/x/x.h"
|
||||
#include "third_party/getopt/getopt.h"
|
||||
#include "tool/build/lib/elfwriter.h"
|
||||
|
@ -166,6 +168,8 @@ void zipobj(int argc, char **argv) {
|
|||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
timestamp.tv_sec = 1647414000; /* determinism */
|
||||
/* clock_gettime(CLOCK_REALTIME, ×tamp); */
|
||||
zipobj(argc, argv);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue